美文网首页
红黑树 R-B Tree

红黑树 R-B Tree

作者: couriravant | 来源:发表于2021-04-20 15:42 被阅读0次

    红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高。
    例如,Java集合中的TreeSetTreeMap,C++ STL中的set、map,以及Linux虚拟内存的管理,都是通过红黑树去实现的。

    1.红黑树有哪些性质
    1)根结点是黑色
    2)每个节点非黑即红
    3)每个叶子节点是黑色的
    4) 红色节点的两个子节点都是黑色的
    5)对任一节点,到叶子节点(NIL)的每一条路径都包含相同数目的黑色节点

    红黑树的这些特点可以确保树的最长路径不大于两倍的最短路径的长度。

    1. 红黑树的各种操作的时间复杂度是多少?
      能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn)

    2. 红黑树相比于BST(二叉查找树)和AVL树(平衡二叉树)有什么优点?

    红黑树是牺牲了严格的高度平衡的优越条件为代价,它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。红黑树能够以O(log2 n)的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。当然,还有一些更好的,但实现起来更复杂的数据结构能够做到一步旋转之内达到平衡,但红黑树能够给我们一个比较“便宜”的解决方案。

    相比于BST,因为红黑树可以能确保树的最长路径不大于两倍的最短路径的长度,所以可以看出它的查找效果是有最低保证的。在最坏的情况下也可以保证O(logN)的,这是要好于二叉查找树的。因为二叉查找树最坏情况可以让查找达到O(N)。

    红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高,所以在插入和删除中所做的后期维护操作肯定会比红黑树要耗时好多,但是他们的查找效率都是O(logN),所以红黑树应用还是高于AVL树的. 实际上插入 AVL 树和红黑树的速度取决于你所插入的数据.如果你的数据分布较好,则比较宜于采用 AVL树(例如随机产生系列数),但是如果你想处理比较杂乱的情况,则红黑树是比较快的

    image.png

    相关文章

      网友评论

          本文标题:红黑树 R-B Tree

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