美文网首页
记-数据结构与算法-二分搜索树、平衡二叉树

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

作者: Andrew0000 | 来源:发表于2019-06-02 09:14 被阅读0次

二叉搜索树

定义

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

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

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

每个节点的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树等。)

相关文章

  • 数据结构与算法

    数据结构线性与非线性数组、链表、栈、队列、树、图 树二叉树:顺序,最优、线索、搜索,平衡多路查找树3、排序算法4、...

  • 算法学习

    数据结构学习笔记:树与树的表示、二叉树及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树、集合及其运算算法学习笔记浅谈...

  • 12-玩转数据结构-AVL

    回到二分搜索树内容,更加高级的话题,平衡二叉树。 我们之前实现的那个二叉树在最差情况下会退化成链表,在现有二分搜索...

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

    二叉搜索树 定义 一种在有序数组中查找某一特定元素的搜索算法,称之为二叉查找或者二分查找法。 在树结构中类似,从中...

  • Swift 算法实战二(二叉树、二分搜索)

    Swift 算法实战一(集合,字典,链表,栈,队列等算法) Swift 算法实战二(二叉树、二分搜索) 前言 这是...

  • Swift 算法实战一(集合,字典,链表,栈,队列等算法)

    Swift 算法实战一(集合,字典,链表,栈,队列等算法) Swift 算法实战二(二叉树、二分搜索) 前言 用 ...

  • 数据结构与算法--从平衡二叉树(AVL)到红黑树

    数据结构与算法--从平衡二叉树(AVL)到红黑树 上节学习了二叉查找树。算法的性能取决于树的形状,而树的形状取决于...

  • 算法草稿

    常用算法集合 字符处理算法数组与查找链表树算法思路 递归、动态规划、BFS/DFS、双指针、二分法搜索数据结构的...

  • 算法与数据结构系列之[二分搜索树-上]

    前几篇介绍了二叉树以及二叉树的遍历,接下来三篇介绍下二分搜索树。 1.什么是二分搜索树 二分搜索树(Binary ...

  • 想去阿里——这是你必备的实力

    算法和数据结构数组、链表、二叉树、队列、栈的各种操作(性能,场景) 二分查找和各种变种的二分查找 各类排序算法以及...

网友评论

      本文标题:记-数据结构与算法-二分搜索树、平衡二叉树

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