二叉排序树

二叉排序树中,左子树的值<根节点的值<右子树的值。
如果按照中序遍历访问,最后得到的结果是一个升序序列。
二叉搜索树又名二叉排序树,又名二叉查找树

插入是递归处理的。
void InsertBST(BiNode *root,int x)
{
if(root==NULL)
{
BiNode *s=(BiNode *)malloc(sizeof(BiNode));
s->data=x;
s->lchild=s->rchild=NULL;
root=s;
}
else if(xdata)
InsertBST(root->lchild,x);
else
InsertBST(root->rchild,x);
}

删除一个结点P(其中f是p的父节点,,p是f的左子树,s是p的右子树中最小值,s的父节点是par)
1、如果结点P是叶子,直接删除。
2、如果p只有右子树,则f->lchild=p->rchild.
3.如果p只有左子树,则f->lchild=p->lchild。
4.如果p的左右子树均不为空,则分为以下几种情况:
(1)p的右子树无左子树,则s就是p的右子树,用p->rchild=s->rchild.p->data=s->data
(2) p的右子树有左子树,par->lchid=s->rchild.

二叉排序树的查找。(采用递归)
BiNode *SearchBST(BiNode *root,int x)
{
if(rootNULL)
return NULL;
if(x
root->data)
return root;
else if(xdata)
return SearchBST(root->lchild,x);
else
return SearchBST(root->rchild,x);
}

性能分析
具有n个节点的二叉排序树,最大深度为n,最小深度为log2n(向下取整)+1。
所以,二叉排序树的查找性能在O(log2n)和O(n)之间。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值