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]);
	}*/
}
示例#2
0
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");
}
示例#3
0
文件: BST.c 项目: fgiobergia/02MNO
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;
	}
}