数据结构-红黑树学习笔记(转)

2019-07-26  本文已影响0人  huangxiongbiao

rbt(红黑树)

图解红黑树:https://www.jianshu.com/p/0eaea4cc5619
数据结构可视化网站:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
demo:https://github.com/lilingyan/take-TreeMap-apart

AVL插入时平衡次数较多,RBT是AVL的折中方法(放宽平衡冗余,减少插入后平衡次数),插入删除效率略高于AVL,查询效率略低于AVL

rbt必定是bst
rbt任意黑节点为根的子树必定是rbt(递归)

红黑树的5个性质

  1. 节点必须是红色或者黑色(所有叶子节点是NIL节点)。
  2. 根节点必须是黑色。
  3. 叶节点(NIL)是黑色的。(NIL节点无数据,是空节点)
  4. 红色节点必须有两个黑色儿子节点 (所以父节点必定也是黑色)。
  5. 从任一节点出发到其每个叶子节点的路径,黑色节点的数量是相等的(黑高 BlackHeight bh 实际应用中,可以忽略NIL节点,所以黑高少1)。

以上条件能保证任意同级子树高度差不超过2倍

定理:n个节点的RBT,最大高度是2log(n+1)

插入节点都默认红色(因为插入黑色,那必定黑高不平衡,就必须要调整了,就和avl一样了。所以插入红色,有部分几率不需要调整)

调整
自底向上,一层一层的调整,直到父节点为黑色的时候,或者到根。

上一篇 下一篇

猜你喜欢

热点阅读