红黑树 学习笔记

参考: https://www.jianshu.com/p/e136ec79235c

R-B树(红黑树) = 自平衡的二叉查找树
AVL树(平衡二叉树) = 自平衡的二叉查找树
在线测试: https://www.cs.usfca.edu/~galles/visualization/RedBlack.html

性质:

  • 每个节点要么是黑色, 要么是红色
  • 根节点是黑色
  • 每个叶子节点(NIL)是黑色
  • 每个红色结点的两个子结点一定都是黑色
  • 任意一结点到每个叶子结点的路径都包含数量相同的黑结点
    • a. 如果一个结点存在黑子结点, 那么该结点肯定有两个子结点

自平衡:
删除、插入导致红黑树失衡后, 红黑树会自平衡, 即通过左旋、右旋和变色来实现

左旋: 以某个结点作为支点(旋转结点), 其右子结点变为旋转结点的父结点, 右子结点的左子结点变为旋转结点的右子结点, 左子结点保持不变
左旋示例图

右旋: 以某个结点作为支点(旋转结点), 其左子结点变为旋转结点的父结点, 左子结点的右子结点变为旋转结点的左子结点, 右子结点保持不变
右旋示例图

变色: 结点的颜色由红变黑或由黑变红


插入
插入操作叫法约定示例图:
插入操作叫法约定

插入规则:
插入规则
注: 4.3.2 更改为 '插入结点是其父结点的左子结点'


删除

删除操作叫法约定示例图:
删除操作叫法约定

删除规则:
删除规则






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章