数据结构-红黑树
一、概念和特点
红黑数(Red-black tree)是一种自动平衡的二叉查找树,又称对称二叉树。
红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。
回顾二叉查找树的知识:二叉查找树(Binary Search Tree),也称为二叉搜索树、有序二叉树(ordered binary tree)或者排序二叉树(sorted binary tree)。
二叉查找树(BST)的特点:
1.若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值
2.若任意节点的右子树不为空,则右子树上所有节点的值均大于它的根节点的值
3.任意节点的左、右子树也分别为二叉查找树
4.没有键值相等的节点
回顾平衡二叉树的知识:
除了二叉树查找树(BST)的特点以外,
它还包含以下几个特点:
1.节点是红色或者黑色
2.根节点一定是黑色的
3.叶子节点是黑色的(NIL)[nil 节点就是空节点,在红黑树的实现中,nil 节点代替二叉树中的 NULL]
4.如果一个节点是红色的,则它的子节点必须是黑色的
5.从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点
二、红黑树的自动平衡修正
1.术语
外侧子孙节点:若某节点相对位置与其父节点的相对位置相同,则该节点是外侧子孙节点。
12在18的左侧,而它的父节点18也在25的左侧,因此12是25的外侧子孙节点
内侧子孙节点:当某个节点的相对位置与其父节点的相对位置不同,则该节点是内侧子孙节点
22在18的右侧,而它的父节点在25的左侧,因此该节点是内侧子孙节点
三、手撕代码
- 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。