二叉排序树(Binary Sort Tree)或者是一棵空树;或者是具有如下性质的二叉树:1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值 2)若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值 3)它的左右子树也分别为二叉排序树。
二叉排序树的查找
int SearchBST(BiTree T,KeyType key, BiTree f,BiTree &p)
{
//在根指针T所指二叉排序树中递归地查找其关键字等于key的数据元素,若查找成功,
//则指针p指向该数据元素节点,并返回true,否则指针p指向查找路径上访问的
//最后一个节点并返回false,指针f指向T的双亲,其初始调用值为NULL
if(!T) {p=f;return false;}
else if(key==T->data.key) {p=T; return true;}
else if(key<T->data.key) return SearchBST(T->lchild,key,T,p);
else return SearchBST(T->rchild,key,T,p);
}
二叉排序树的插入
int InsertBST(BiTree &T,ElemType e)
{
//当二叉排序树T中不存在关键字等于e.key的数据元素时,插入e并返回true,否则,返回false
if(!SearchBST(T,e,NULL,p)
{
s = (