int main(void) { BSTree tree = NULL; int a[9]= { 16,8,4,3,6,10,9,46,97 }; for (int i = 0; i < 9; i++) { BSTInsert(&tree, a[i]); } BSTDelete(&tree, 16); BSTMidTravserse(tree); //int max = BSTDepth(tree,0); //printf("\nMaxBSTDepth = %d \n", max); //Qsort(a, 0, 5); /*for (int i = 0; i < 6; i++) { printf("%d ", a[i]); }*/ }
void main(){ BiTree T=NULL,p; DataType table[]={37,32,35,62,82,95,73,12,5}; int n=sizeof(table)/sizeof(table[0]); DataType x={73},s={32}; int i; for(i=0;i<n;i++) BSTInsert(&T,table[i]); printf("中序遍历二叉排序树得到的序列为:\n"); InOrderTraverse(T); p=BSTSearch(T,x); if(p!=NULL) printf("\n二叉排序树查找,关键字%d存在\n",x.key); else printf("查找失败!\n"); BSTDelete(&T,s); printf("删除元素%d后,中序遍历二叉排序树得到的序列为:\n",s.key); InOrderTraverse(T); printf("\n"); system("pause"); }
void BSTDelete (BST b, Item i) { BST a; Item c; a = BSTSearch(b,i); if (a->l == NULL && a->r == NULL) { if (a->parent->l==a) { a->parent->l = NULL; } else { a->parent->r = NULL; } } else if (a->l == NULL && a->r != NULL) { if (a->parent->l==a) { a->parent->l = a->r; } else { a->parent->r = a->r; } a->r->parent = a->parent; //a = a->r; } else if (a->l != NULL && a->r == NULL) { if (a->parent->l==a) { a->parent->l = a->l; } else { a->parent->r = a->l; } a->l->parent = a->parent; //a = a->l; } else { c = BSTGetNext (NULL,(void*)a,BINSER); BSTDelete (b, c); a->itm = c; } }