【5.4】二叉搜索树

一、二叉搜索树

Binary Search Tree(BST)

  • 或者是一棵空树;
  • 或者是具有下列性质的二叉树:
  • 对于任何一个结点,设其值为K
  • 则该结点的 左子树(若不空)的任意一个结点的值都 小于 K;
  • 该结点的 右子树(若不空)的任意一个结点的值都 大于 K;
  • 而且它的左右子树也分别为BST

性质: 中序遍历是正序的(由小到大的排列)

BST示意图:

二、例子

检索 19

  • 只需检索二个子树之一
  • 直到 K 被找到
  • 或遇上树叶仍找不到,则不存在

插入17

  • 首先是检索,若找到则不允许插入
  • 若失败,则在该位置插入一个新叶
  • 保持BST性质和性能!

BST删除(值替换)

找rt右子树中最小结点,并删除

三、二叉搜索树总结

  • 组织内存索引
  • 二叉搜索树是适用于内存储器的一种重要的树形索引,常用红黑树、伸展树等,以维持平衡
  • 外存常用B/B+树
  • 保持性质 vs 保持性能
  • 插入新结点或删除已有结点,要保证操作结束后仍符合二叉搜索树的定义

思考

怎样防止BST退化为线性结构?

允许重复关键码吗?(插入、检索、删除)

参考资料

北京大学 《数据结构与算法》 张铭、赵海燕、宋国杰、黄骏、邹磊、陈斌、王腾

这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn