先上图:
红黑树的性质:
1.结点非黑即红;
2.根节点为黑;
3.叶结点为黑;
4.红结点的子节点为黑;
5.任意结点到叶结点路径上的黑结点数相同。
今天复习红黑树的时候,突然想起了这种情况。乍一看,似乎还真满足红黑树上诉的所有性质。
那岂不是说红黑树还会退化成线性表?
那不是出大问题?所以肯定哪里出问题了。
----------------------------------------
思考了一下,发现其实这个情况根本就不会出现。
因为一颗红黑树的创建肯定是从null开始一个一个结点添加的,而这个图直接跳过了创建的过程。
我们知道,红黑树在插入的时候会进行一些操作如变色,左右旋来保证红黑树的性质。这些操作的目的之一本身就是为了避免退化成线性表,也就是保持平衡性。
假设现在有一些数据是递增的,不妨重现一下上图的创建过程:
1.插入第一个节点:
根节点必须为黑色,所以插入的结点由红变黑。
2.插入第二个结点:
红结点不能作为叶结点,所以B应该还有两个黑的子节点。
3.插入第三个结点:
这个时候,红黑树已经要进行平衡操作,所以B结点进行左旋:
所以到这里已经不会出现最开始那张图的情况了,后面就不再解释了。
作者也是新手,如果错漏,还望指正。