赞
踩
一:红黑树的五点特质:
1、每个节点都只能是红色或者黑色
2、根节点是黑色
3、每个叶节点(NIL节点,空节点)是黑色的。
4、如果一个结点是红的,则它两个子节点都是黑的。也就是说在一条路径上不能出现相邻的两个红色结点。
5、从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
二:以下五种情况涵盖了绝大部分(杠精绕行)的新增可能,不管这棵红黑树多么复杂,都可以根据这五种情况来进行生成:
1:若新插入的节点N没有父节点,则直接当做根据节点插入即可,同时将颜色设置为黑色。
2:父节点为黑色(C),并且新增节点(A)为父节点的左子节点,可以直接插入,也不会打乱红色树的五大特质。
3若父节点A和叔父节点B都是红色,父节点的父节点C是黑色,这样就不能直接插入了,设置节点A和B为黑色,设置节点C为红色,这样满足条件,但是C节点的父节点或许也是红色,这样以C节点为新增节点,向上进行调整。
4:这种情况多数是由情况三变色,向上调整所出现情况。新增节点为父节点A的左子节点,并且都为红色,新增节点的父节点的父节点C为黑色,叔叔节点B为黑色或者NIL。这样以节点C为中心进行右单旋并着色。相反进行左单旋并着色。
5:这种情况多数是由情况三变色,向上调整所出现情况。新增节点为父节点A的右子节点,父节点A为父节点的父节点C的左子节点。首先以父节点A为中心经行左单旋,然后以父节点A的父节点C为中心进行右单旋。相反则先以父节点A为中心右旋,然后再以节点C为中心左旋。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。