红黑树理解-插入删除
引
红黑树的概念要是不联系234的话记忆还是比较混乱的。方法很简单就是把红节点看成和它的父节点同层。但是好像在处理删除的时候234树的作用没有那么大。
网上的资料里2-3-4树都为B树但是《数据结构与算法分析》一书中该树是B+树。
然后在这里写的时候用到的是下文的资料
http://blog.csdn.net/v_july_v/article/details/6105630
从 【三、红黑树的插入】 开始
具体情况
插入
这里15应该是右子树
对应于234树
(圈算红结点)
(这白平衡orz)
删除
这篇文章里二重黑色的意思是,在计算这条支路的黑节点数量的时候它算两次。
那么对于
a)当前节点是红+黑色 解法,直接把当前节点染成黑色,结束此时红黑树性质全部恢复。 b)当前节点是黑+黑且是根节点,
解法:什么都不做,结束。
这两句应该比较好理解了。
后面的几种删除修复情况都是在对双重黑节点(N)进行调整。
红黑树删除的时候一开始的N节点应该都是NIL。在我的理解里……大概的解释了为什么感觉只有红黑树特别的强调了NIL节点。
感觉比较神奇的是红黑树的删除的第一步(删除节点、调整数值)当作二叉树来理解会比较容易,而在后面的调整其实我感觉我还没发很清楚的理解……
删除修复情况1:ab比其他少1
删除修复情况2:abcdef相同
删除修复情况3:cd少1
删除修复情况4:ab少1
比如2中调整的时候如果B是红色下一步就可以直接把它变成黑色。如果是红色需要继续向上调整。
(这么想来234树的删除也并没有找到很好的解释……不过想想就觉得想出这种结构的人好厉害哇~!)