红黑树的核心原理:
1.没有两个相邻的红节点
2.从根节点到所有叶子节点的黑节点数目一样
抓住这2个核心就抓住红黑树的本质.之后去理解红黑树的特性.
红黑树的特性
1.查询效率log(n),这个和二叉搜索树一样,但不会退化成链表
为什么不会退化成链表:从上面2条,设最短路径为n,则最长路径为2n,所以是大体平衡
2.没有AVL树那么要求平衡,所以插入,删除时旋转次数少,效率高
红黑树插入规则
1.每次插入红节点
2.如果是根,变成黑
3.如果父节点是黑,完成
证明:如果父节点是黑,插入一个红节点,则不影响这条路径上黑节点的数目,所以符合原理得1和2
4.如果父节点是红,叔父是红
证明:现在原理2符合,但原理1不符合,所以将父和叔父涂黑,符合原理1,但祖父这一支,现在多了一个黑节点,所以将祖父涂红,然后把祖父当作插入节点继续处理
5.如果父是红,叔父是黑
如果自己和父节点不是一侧,先把自己和父节点转到一侧,以父节点为中心,转,把祖父变成父的儿子,转完之后父节点涂黑,父节点的2个儿子都为红
证明,这么做的目的是为了从祖父节点开始的这一支,每条路经上没有增加黑节点,为了满足原理1,2
来源:CSDN
作者:idealemail
链接:https://blog.csdn.net/idealemail/article/details/104219011