我对rb-tree有问题。根据维基百科,rb-tree需要遵循以下内容:
我们知道,rb-tree需要平衡并且高度为O(log(n))。 但是,如果我们插入一系列不断增加的数字(1,2,3,4,5 ......),理论上我们会得到一个看起来像列表的树,并且它的高度为O(n)节点黑色,与上面提到的rb-tree属性不矛盾。那么,我哪里错了?
感谢。
答案 0 :(得分:3)
在the article中进一步向下:
插入从添加节点开始 二进制搜索树插入 并将其涂成红色。
答案 1 :(得分:3)
您的示例与属性编号5相矛盾,因此它不是有效的红黑树。
我们拥有的树是:
b(1, nil, b(2, nil, b(3, nil, b(4, nil, b(5, nil, nil)))))
所以要到达最后两个叶子(节点5
的子节点),我们必须访问五个黑色节点(由每个b
表示),以到达节点{{下的叶子1}}我们必须访问四个黑色节点等。这意味着从根到这些后代的一些简单路径包含不同数量的黑色节点,这使属性5无效。