美文网首页
二叉查找树之一:二叉查找树

二叉查找树之一:二叉查找树

作者: longLiveData | 来源:发表于2020-05-26 17:21 被阅读0次

二叉查找树

二叉查找树(BST)的特性:

  • 1.子树上所有结点的值均小于或等于它的根结点的值。
  • 2.子树上所有结点的值均大于或等于它的根结点的值。
  • 3.左、右子树也分别为二叉排序树。

下图中这棵树,就是一颗典型的二叉查找树:

二叉查找树的查找操作

这样的数据结构,在查找时使用二分查找的思想,查找所需的最大次数等同于二叉查找树的高度。

比如,当我们想在上图查找值为10的结点时:
1.查看根结点9
2.根据二叉查找树左子树小、右子树大的特性,10 > 9,因此值为10的结点只可能在根结点的右子树当中,我们查看右孩子结点13
3.由于10 < 13,因此查看左孩子11
4.由于10 < 11,因此查看左孩子10,发现10正是要查找的结点:

不仅查找,在插入新结点时也运用了同样的思路,通过一层一层比较大小,找到新结点适合插入的位置。

二叉查找树插入操作

递归查询插入。

二叉查找树删除操作

二叉查找树的删除操作可以分成三种情况。

情况1,待删除的结点没有子结点:

上图中,待删除的结点12是叶子结点,没有孩子,因此直接删除即可:

情况2,待删除的结点有一个孩子:

上图中,待删除的结点13只有左孩子,于是我们让左孩子结点11取代被删除的结点,结点11以下的结点关系无需变动:

情况3,待删除的结点有两个孩子:

上图中,待删除的结点5有两个孩子,这种情况比较复杂。此时,我们需要选择与待删除结点最接近的结点来取代它。

上面的例子中,结点3仅小于结点5,结点6仅大于结点5,两者都是合适的选择。但习惯上我们选择仅大于待删除结点的结点,也就是结点6来取代它。

于是我们复制结点6到原来结点5的位置:

被选中的结点6,仅大于结点5,因此一定没有左孩子。所以我们按照情况1或情况2的方式,删除多余的结点6:

二叉查找树的缺陷

但是,二叉查找同样树存在缺陷:在插入、删除的过程中不能保证二叉树始终平衡。

比如:

假设初始的二叉查找树只有三个结点,根结点值为9,左孩子值为8,右孩子值为12:

接下来我们依次插入如下五个结点:7,6,5,4,3。依照二叉查找树的特性,结果会变成什么样呢?

此时的二叉树虽然也符合二叉查找树的特性,但是查找的性能大打折扣,几乎变成了线性。

为了解决这个缺陷,提出了自平衡二叉查找树

两种平衡二叉查找树

自平衡二叉查找树,顾名思义,是在插入和删除的过程中自动保持平衡的二叉查找树。

AVL树:是严格平衡的二叉树,要求每个结点的左右子树高度差不超过1
红黑树:任何一条路径上的长度不超过其他路径长度的2倍
红黑树:

二者相比,AVL树的查找效率更高,但平衡调整的成本也更高。

在需要频繁查找时,选用AVL树更合适;
在需要频繁插入删除时,选用红黑树更合适。

相关文章

  • 极客时间数据结构与算法之美笔记25~26

    二叉树到二叉查找树,是为了查找数据的效率接近logN。 二叉查找树到平衡二叉查找树,是为了防止二叉查找树沦为链表。...

  • 二叉查找树

    1)二叉查找树是什么?2)二叉查找树的插入、删除、查找?3)Go代码实现 一、二叉查找树是什么?二叉查找树(BST...

  • 红黑树

    红黑树的本质就是一棵二叉查找树,所以先从二叉查找树来了解起。 二叉查找树 二叉查找树又称有序二叉树,具有以下特性:...

  • 二叉查找树

    二叉查找树,又称二叉搜索树 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: ...

  • 99-数据结构和算法

    难点:二叉树的遍历 红黑树 图的遍历 二叉查找树二叉查找树(binary search tree),二叉查找树在二...

  • 11-二叉查找树

    二叉查找树 1.什么是二叉查找树? 二叉查找树是一种支持数据动态的插入,删除,查找的数据结构。 2.二叉查找树的设...

  • 17张图带你解析红黑树的原理!保证你能看懂!

    二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Bin...

  • 二叉树 堆 2019-04-17

    二叉树 实现一个二叉查找树,并且支持插入、删除、查找操作 实现查找二叉查找树中某个节点的后继、前驱节点 实现二叉树...

  • 6. 二叉树创建-查找

    1. 递归方式实现二叉树的构建2. 树、二叉树、二叉查找树3. 二叉树排序树的理解4. 二叉查找树5. 二叉树的查找

  • 数据结构中的各种树

    一、二叉树 二、二叉查找树(又称二叉排序树,二叉搜索树) 二叉查找树(Binary Search Tree)它或者...

网友评论

      本文标题:二叉查找树之一:二叉查找树

      本文链接:https://www.haomeiwen.com/subject/yplvahtx.html