二叉排序树的构造--链式存储

二叉排序树定义:

一棵空树,或者是具有下列性质的二叉树:

  • (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • (3)左、右子树也分别为二叉排序树;

向二叉排序树中插入一个新结点:

int BST_Insert(BiTree &T,KeyType k){
	if(T!=null){		//当结点为空时,新插入的结点作为根结点
		T=(BiTree)malloc(sizeod(BSTree));
		T->data=k;
		T->lchild=T->rchild=null;
		return 1;
	}
	else if(K==T->data)	//当原树中已存在相同关键字,插入失败
		return 0;
	else if(k<T->data) 	//递归插入到左子树中
		return BST_Insert(T->lchild,k);
	else 			//递归插入到右子树中
		return BST_Insert(T->rchild,k);
}

不断调用插入结点BST_Insert函数构造二叉排序树:

void Creat_BST(BiTree &T,KeyType str[],int n){
	T=null;		//初始时树为空
	int i=0;
	while(i<n){	//依次调用插入函数将关键字插入
		BST_Insert(T,str[i]);
		i++;
	}
}
posted @ 2022-11-20 19:59  UCAS_2023_An  阅读(224)  评论(0)    收藏  举报