3分钟让你明白:HashMap之红黑树树化过程(5)
发布时间:2019-10-12 13:35 所属栏目:21 来源:追逐仰望星空
导读:x本身为根节点返回x。 x的父节点为黑色或者x的父节点是根节点直接返回不需要变换。 如若上述两个条件不满足的话,就要进行变换了,允许我再贴一点代码......没有代码分析起来很困难。 06 颜色变换 if(xp==(xppl=xpp
x本身为根节点返回x。 x的父节点为黑色或者x的父节点是根节点直接返回不需要变换。 如若上述两个条件不满足的话,就要进行变换了,允许我再贴一点代码......没有代码分析起来很困难。 06 颜色变换
这里是一个典型的一个黑色节点的两个子节点都是红色的所以要进行颜色变换,因为插入的都是红色节点,当检测到祖父节点的左右子节点都是红色的时候两个红色就产生了冲突,所以先将节点进行这种颜色变换,将祖父节点变成红色,然后将祖父的两个子节点变成黑色,这样我们插入的红色节点就不会违背红黑树的规则了。 这里有人会有疑问,如果祖父节点是根节点呢,那样的话祖父节点也会变成黑色,因为每次循环进行插入平衡的操作当进行这种颜色变换之后都会将插入节点的引用指向祖父节点,当进行下一轮循环的时候会优先检测当前节点是否是根节点,如果是根节点那就将颜色变成黑色,下面看图: 当将节点指向祖父节点进行下一轮循环时: 07 两个核心旋转(左旋转和右旋转)
颜色变换完成后进入下面的else块 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读