码迷,mamicode.com
首页 > 其他好文 > 详细

红黑树

时间:2018-04-04 23:14:02      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:tps   tail   tar   节点   解决   article   targe   details   颜色   

https://blog.csdn.net/eson_15/article/details/51144079

 

插入操作:

插入后红黑树出现的问题:

1. 插入节点的父节点和其叔叔节点(祖父节点的另一个子节点)均为红色的

2.插入节点的父节点是红色,叔叔节点是黑色,且插入节点是其父节点的右子节点

3.插入节点的父节点是红色,叔叔节点是黑色,且插入节点是其父节点的左子节点

解决:

1.自己变红,父节点和叔父节点变黑,祖父节点变红,祖父节点设置为当前节点;(问题1解决,但出现问题2)

2.当前节点(1步骤的祖父节点)的父节点设置为当前节点,当前节点左旋;(问题2解决,但出现问题3)

3.当前节点的父节点变黑,祖父节点变红,祖父节点右旋;(问题3解决)

总结:

变色 ---- 左旋 ---- 变色 ---- 右旋

 

删除:

情况:

1.该节点是叶节点,没有子节点(直接删除)

2.该节点有一个子节点(自己删除,子节点作为当前节点)

3.该节点有两个子节点(删除:参考https://blog.csdn.net/eson_15/article/details/51138663

 

删除后红黑树出现的问题:

1. 当前节点是黑色的,且兄弟节点是红色的(那么父节点和兄弟节点的子节点肯定是黑色的);

2. 当前节点是黑色的,且兄弟节点是黑色的,且兄弟节点的两个子节点均为黑色的;

3. 当前节点是黑色的,且兄弟节点是黑色的,且兄弟节点的左子节点是红色,右子节点时黑色的;

4. 当前节点是黑色的,且兄弟节点是黑色的,且兄弟节点的右子节点是红色,左子节点任意颜色。

解决:

 

总结:

红黑树

标签:tps   tail   tar   节点   解决   article   targe   details   颜色   

原文地址:https://www.cnblogs.com/zhchy89/p/8719325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!