一 .关于红黑树,先上一张图,这里提供一个可视化数据结构的网站:可视化带动画的数据结构基本的在线操作,我在这上面生成了一张:
网上有很多教程,写的也非常棒,这里简单的总结一下其基本性质:
1.每一个节点或者是红色,或者是黑色;
2. 根节点是黑色的;
3.如果一个节点是红色的,那么它的子节点必须是黑色的;
4.从一个节点到一个null引用(如上图 的 60节点的左子节点其实是没有的)的每一条路径一定包含相同数目的黑色节点
5.规定 null引用指向的节点(即空节点)是黑色的。
二 .为啥有了平衡二叉树还要有红黑树
根据二者的结构图很容易看出红黑树的查找速度明显不如AVL树,为啥还会有红黑树的出现
三 .红黑树在更新的时候是如何维护平衡的
根据上面描述的基本性质,可以推断维护平衡的其中一个条件是 给节点涂上颜色,但是涂上颜色后不一定平衡, 这就用到了前面AVL树的维持平衡的方式:旋转
综合即两种方式:
1. 改变节点的颜色
2.旋转节点