树(五)——二叉排序树(BST)

定义

二叉排序树是一棵具有如下特性的二叉树:

  1. 若左子树非空,则左子树上所有节点的值均小于根节点的值
  2. 若右子树非空,则右子树上所有节点的值均大于根节点的值
  3. 左、右子树均为一棵排序二叉树

二叉树的中序遍历可以得到一个递增的有序序列

查找

  • 从根节点开始沿某个分支逐层向下比较。
  • 先跟根节点比较,如果值相等则查找成功
  • 若小于根节点的关键字,则再根节点的左子树上查找,否则在右子树上查找

插入

若原二叉树为空,则直接插入节点;否则,小于根节点的值,则插入到左子树,大于则插入到右子树上。
插入的结点一定是一个新添的叶结点

删除

删除可以分一下三种情况来考虑

  1. 若被删除节点z为叶结点,则直接删除
  2. 若被删除结点z只有一颗左子树获右子树,则让z的子树成为z父节点的子树
  3. 若节点z右左右两棵子树,则令z的直接后继(或直接前驱)代替z,然后从二叉排序中删去这个直接后继(或直接前驱),又转为第一获第二种情况。

查找效率分析

二叉树的查找效率,主要取决于树的高度。若左右子树的高度只差绝对值不超过1,则平均查找长度为 O ( l o g 2 n ) O(log_2n) O(log2n);若二叉排序树是一个只有左(右)孩子的单支树,则平均查找长度为 O ( n ) O(n) O(n)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值