记-数据结构与算法-二分搜索树、平衡二叉树

二叉搜索树

定义

一种在有序数组中查找某一特定元素的搜索算法,称之为二叉查找或者二分查找法。

在树结构中类似,从中间元素开始查找,对比大小,缩小搜索范围。

而二叉(分)查找(搜索)树,

每个节点的key值大于左子节点,小于右子节点,不一定是二叉树。

借助这个性质,二叉搜索树不仅可以用来搜索查找数据,还可以高效地插入、删除数据。

遍历

二叉树的前序遍历、中序遍历、后序遍历

添加

遵循插入元素大于中间元素向右支走,小于中间元素左支走,不断迭代循环。

删除

分为三类:

  1. 没有子类,直接删除
  2. 有一个子类,目标节点被删除,将子节点移动到已删除节点的位置
  3. 有两个子类,目标节点被删除,从删除节点的左子树中找到最大的节点,将其移到到删除的节点的位置
局限

二分搜索树一旦退化成单链表,查找搜索效率和插入删除效率降低。

平衡二叉树(AVL树)

Wiki

在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 O(logn)。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL 树得名于它的发明者 G. M. Adelson-Velsky 和 Evgenii Landis。

优势

针对于二叉搜索树查找效率取决于树的高度,只要保证树的高度就可以保证搜索效率。经过研究,当节点数目一定,保持树的左右两端平衡,就是平衡二叉树。

即要求,任意左右子树的高度差只能是-1、0、1三个数值,这被称之为平衡二叉树。

另外,上面所谓树的高度差和深度差都可以表述成平衡二叉树的平衡因子。平衡因子只能取-1、0、1。

AVL树插入后最小失衡树与左右旋调整

最小失衡树:在新插入的节点向上查找,以第一个平衡因子的绝对值超过 1 的节点为根的子树称为最小不平衡子树。

失衡调整方法:通过旋转最小失衡子树来实现的


失衡调整方法.jpeg
AVL树删除节点

需要重新检查平衡性并且修正,通过左右旋就能得到。

小结

平衡二叉树的优势在于当二叉树退化成单链表失衡,固定了树的高度,保证了查找搜索效率。

但是为了保证平衡性,损失了在动态插入和删除的效率

因此需要其他灵活性修改,例如红黑树(不是真正的平衡二叉树,借鉴了思想,理论基础2-3-4树等。)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 二叉搜索树,平衡树,B,b-,b+,b*,红黑树 二叉搜索树 ​ 1.所有非叶子结点至多拥有两个儿子(Le...
    raincoffee阅读 3,898评论 3 18
  • 1. 树的概念 一个树由节点组成,这些节点包含根节点,父节点,子节点,兄弟节点;没有任何一个节点的树称为空树;如果...
    HChase阅读 6,379评论 0 34
  • 目录 1、什么是树 2、相关术语 3、二叉树 3.1、二叉树的类型 3.2、二叉树的性质 3.3、二叉树的结构 3...
    我哈啊哈啊哈阅读 2,584评论 0 10
  • 下午一个人点了蜜汁烤鸡还有鸡腿吃~图书馆因为在预防"登革热",所以不允许带食物进去,连水果也禁止了。所以自己是在"...
    风兮_ebc5阅读 320评论 0 0
  • ■ 諺語寓意翻譯 我只為我說的話負責 而不是你所理解的事 ■ 聽其言、觀其行,一目了然。 ■ 一個坐姿...
    黑貓子阅读 403评论 0 0