看起来维基百科上的定义不是很精确:
http://en.wikipedia.org/wiki/Red-black_tree#Properties
一个所有节点都为黑色的树是否是红黑树?
更新
由于rbtree的定义不太严格,我们如何决定将黑色节点的子节点打印为红色还是黑色?
看起来维基百科上的定义不是很精确:
http://en.wikipedia.org/wiki/Red-black_tree#Properties
一个所有节点都为黑色的树是否是红黑树?
更新
由于rbtree的定义不太严格,我们如何决定将黑色节点的子节点打印为红色还是黑色?
[black 5]
/ \
[red 3] [black 6]
/ \
[black 2] [black 4]
是2-3-4树的表示
[3 | 5]
/ | \
[2] [4] [6]
[3 | 5]
)或4节点的2-3-4树。请注意,这基本上只是一个普通的二叉搜索树。是的,一个全部节点都是黑色的树可以是红黑树。这棵树必须是完美的二叉树(所有叶子在同一深度或层级,且每个父节点都有两个子节点),因此它是唯一一个其 黑高度 等于其 树高度 的树。
有可能实现一个所有节点都为黑色的正确红黑树。很显然,只有一个节点或只有叶子节点是根节点的直接子节点的RBTree将会全部为黑节点。
是的,所有节点都为黑色的树可以是红黑树。 可以证明这样的树必须是完全填充的树,以保持相等的黑深度属性。
您可以通过构建一个这种类型的小树来自行证明所有黑色节点的树可以是红黑树。 例如:
2,black
1,black 3,black
这棵树有所有黑色节点并满足所有条件。假设根节点的父节点为 nil,叶子节点的两个子节点都是 nil。希望这可以帮到你。
是的,但对于所有节点都为红色的红黑树来说并非如此。这样的树是无效的。有关节点必须为黑色的限制。例如,叶节点必须为黑色,红色节点的子节点都必须为黑色。
[3 | 5]
这样的节点并不被称为 3-节点,是因为它包含了 3 个元素(实际上并没有),而是因为它可以有三个子节点。 - jtbandes