一篇文章带你了解红黑树的特性和应用场景! 一、什么是红黑树? 红黑树,是一种由红黑节点组成,并能自平衡的二叉查找树。它在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡,从而保证了红黑树的查找、插入、删除的时间复杂度最坏为0(log n)。 二、为什么需要红黑树? 刚说到,红黑树也是一种二叉查找树,那它解决了什么问题?这得先从二叉查找树的定义和问题说起。 二叉查找树,也称有序二叉树,或已排序二叉树。简单来说,它是一种特殊的二叉树,特点是:左子树节点都比父节点小,右子树节点值都比父节点大。
二分搜索树有着高效的插入、删除、查询操作。平均时间的时间复杂度为O(log n),极端情况是倒退为链表,复杂度为O(n) 二、为什么需要红黑树? 二叉查找树的极端情况:大部分子节点都比父节点值小, 然后导致所有的数据偏向左侧,进而退化成链表。
为了解决二叉树退化成一颗链表的问题,就引入了平衡二叉树。平衡二叉树的特点是: 1.拥有二叉查找树的全部特性 2.每个节点的左子树和右子树的高度差至多等于1
平衡二叉树通过旋转,解决了节点偏向一边的问题,但这种高度差为1的要求太严格了,导致每次进行插入/删除节点时,几乎都会破坏平衡树的第二个规则。如果遇到插入、删除频繁的场景,平衡树就会频繁进行调整,会使平衡树的性能大打折扣。为了解决这一个问题,就引入了红黑树。 三、红黑树的特性? 在满足二叉查找树的特性上,红黑树还有这5个特点: 1.每个节点只能是红色或者是黑色 2.根节点只能是黑色,且黑色根节点不存储数据 3.任何相邻的节点都不能同时为红色 4.红色的节点,它的子节点只能是黑色 5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点
正是因为这些特点,红黑树不同于平衡树的操作,红黑树不会因为插入、删除等操作追求绝对的平衡,它的旋转次数少,插入最多两次旋转,删除最多三次旋转,最坏情况下也能保证在O(log n)的时间复杂度查找到某个节点。所以对于搜索、插入、删除操作较多的情况下,红黑树的效率是优于平衡二叉树的。 四、红黑树的应用场景? 可用于存储有序数据、增删频发的场景。比如:Java集合中的TreeSet和TreeMap;JDK中HashMap,当链表长度大于8时会转化成红黑树;C++STL中的set、map,以及Linux虚拟内存的管理。 想要学习更多Java知识,需要掌握的东西还是挺多的,免费分享一波自己整理的资料吧~就能领取哦!加领取资料 本期的分享就到这里啦,别忘了点赞加收藏哦~
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/51901.html