学习红黑树后学习记录
学习目录:
一、红黑树理论讲的很好的一篇漫画图解博客
二、为什么会出现红黑树
三、红黑树特性
四、红黑树的插入和删除,看这篇博客就可以了
五、红黑树的应用
六、总结
一、红黑树理论讲的很好的一篇漫画图解博客
https://www.sohu.com/a/201923614_466939
二、为什么会出现红黑树
红黑树用于解决二叉搜索树查询时的最坏时间复杂度达到O(N)的情况。有一情形:多次插入新节点导致的不平衡,如下图所示:
三、红黑树特性
在满足二叉搜索树特性的前提下,还需满足以下5个特点:
一 节点非红即黑。
二 根结点是黑色。
三 所有NULL节点称为叶子节点,且其颜色为黑色。
四 所有红节点的2个子节点都为黑色【换言之,从任意子节点到根节点不能有2个“连续”的红色节点。】
五 从任一节点到其每个子节点的所有路径都包含相同的黑色的节点。
四、红黑树的插入和删除,看这篇博客就可以了
红黑树的插入和删除时,要对红黑树进行调整,进行“旋转或变色”的操作。下面这篇博客不仅对红黑树的插入和删除操作进行了详细的步骤讲解,还讲解了为什么要这样操作来进行插入和删除操作。
https://www.cnblogs.com/fornever/archive/2011/12/02/2270692.html
五、红黑树的应用
红黑树的应用:JDK集合类的TreeMap和TreeSet底层用红黑树实现。JDK8中的HashMap其底层实现也用到了红黑树。
六、总结
总结:红黑树的5个特性约束了该树的平衡性能:即从根到叶子的最长可能路径不多于(<=)最短可能路径的两倍长。得到这个结论的理由是:红黑树中最短可能路径是全部为黑色节点的路径,最长可能路径是红黑相间的路径。