红黑树理解

梦想的初衷 提交于 2020-02-08 12:31:58

红黑树的核心原理:

1.没有两个相邻的红节点

2.从根节点到所有叶子节点的黑节点数目一样

抓住这2个核心就抓住红黑树的本质.之后去理解红黑树的特性.

 

红黑树的特性

1.查询效率log(n),这个和二叉搜索树一样,但不会退化成链表

为什么不会退化成链表:从上面2条,设最短路径为n,则最长路径为2n,所以是大体平衡

2.没有AVL树那么要求平衡,所以插入,删除时旋转次数少,效率高

 

红黑树插入规则

1.每次插入红节点

2.如果是根,变成黑

3.如果父节点是黑,完成

证明:如果父节点是黑,插入一个红节点,则不影响这条路径上黑节点的数目,所以符合原理得1和2

4.如果父节点是红,叔父是红

证明:现在原理2符合,但原理1不符合,所以将父和叔父涂黑,符合原理1,但祖父这一支,现在多了一个黑节点,所以将祖父涂红,然后把祖父当作插入节点继续处理

5.如果父是红,叔父是黑

如果自己和父节点不是一侧,先把自己和父节点转到一侧,以父节点为中心,转,把祖父变成父的儿子,转完之后父节点涂黑,父节点的2个儿子都为红

证明,这么做的目的是为了从祖父节点开始的这一支,每条路经上没有增加黑节点,为了满足原理1,2

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!