二叉排序树定义:
一棵空树,或者是具有下列性质的二叉树:
- (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(kdata) //递归插入到左子树中
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//依次调用插入函数将关键字插入
BST_Insert(T,str[i]);
i++;
}
}