美文网首页
数据结构与算法:二叉树->平衡二叉树->红黑树

数据结构与算法:二叉树->平衡二叉树->红黑树

作者: 木头与琉璃 | 来源:发表于2019-10-23 17:07 被阅读0次

1.什么是二叉查找树?

一棵空树,或者是具有下列性质的二叉树

  • 若左子树不空,则左子树上所有节点的值均小于它的根节点的值;
  • 若右子树不空,则右子树上所有节点的值均大于它的根节点的值;
  • 左、右子树也分别为二叉排序树;
  • 没有键值相等的节点
二叉树.gif

2.什么是二叉查找树的“瘸腿”问题?

“瘸腿”:如图所示,左腿或者右腿特别长,也就是说这些数据构成的二叉树不平衡。


“瘸腿”二叉树.gif

3.如何解决二叉树的“瘸腿”问题?

为了使二叉树变得平衡,我们需要保证每个左边的树的层次和右边的树的层次相差不超过1。所以问题就变成了怎么保证每个左边的树的层次和右边的树的层次相差不超过1?

  • 3.1 当节点右边层数比右左边层数大于1的时候,对树进行左旋


    左旋.gif
  • 3.2 当节点左边边层数比右边层数大于1的时候,对树进行右旋
    右旋.gif
    综上,通过左旋和右旋保证所有节点的左右子树高度差不超过1,也就解决二叉树的"瘸腿",进而实现二叉树的平衡,这就是平衡二叉树。但每次插入都要去判别是否需要旋转,而旋转的代价又比较大,这样,在插入多,查找少的情况下就会显得得不偿失。所以,接下来问题就是怎么解决平衡二叉树的效率问题?

4.如何解决平衡二叉树的效率问题?

平衡二叉树由于频繁左旋和右旋导致在频繁插入的情况下效率较低,所以取了折中的方案:减少选择旋转的次数。也就是由所有节点的左右子树高度差不超过1妥协为不超过短的那棵树高度一倍,举例:某个节点左子树的高度是2,那么该节点的右子树的高度不能超过4。具体的实现方式一种就是红黑树。


图示.gif

相关文章

  • (5)树相关题目

    树是一种特殊的数据结构,包括二叉树、平衡树、B树、红黑树等众多类型。其定义为 二叉树中常见的算法题目均可以通过迭代...

  • 有了二叉树,平衡二叉树为什么还需要红黑树

    红黑树是处于二叉树和平衡二叉树之间的一种折中方案的算法。说起来红黑树也算是比较难理解的一个数据结构了吧,因为其本身...

  • 不可多得的后端架构师技术图谱!内附参考资料!

    数据结构 二叉树 完全二叉树 平衡二叉树 二叉查找树(BST) 红黑树 B-,B+,B*树 LSM 树 队列 集合...

  • 红黑二叉树

    红黑二叉树 红黑二叉树(简称:红黑树),它首先是一棵二叉树,同时也是一棵自平衡的排序二叉树。 红黑树在...

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

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

  • 后端架构师技术图谱

    数据结构队列集合链表、数组字典、关联数组栈树二叉树完全二叉树平衡二叉树二叉查找树(BST)红黑树B-,B+,B*树...

  • 后端架构师技术图谱(一)

    数据结构队列集合链表、数组字典、关联数组栈树二叉树完全二叉树平衡二叉树二叉查找树(BST)红黑树B-,B+,B*树...

  • 树与二叉树

    **树 ** 二叉树 满二叉树 完全二叉树 三种遍历方法 树与二叉树的区别 二叉查找树 平衡二叉树 红黑二叉树

  • 考点总结:互联网校招技术岗都考些什么?

    数据结构 红黑树 pk 平衡二叉树 hash表处理冲突的方法 算法 手写 最长无重复字符子串 链表的增、删、查、逆...

  • 【数据结构】红黑树

    1、什么是红黑树? 红黑树是一个要求不那么严格的平衡二叉树搜索树(平衡二叉搜索树/AVL树=平衡二叉树+二叉搜索树...

网友评论

      本文标题:数据结构与算法:二叉树->平衡二叉树->红黑树

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