java - 红黑树-黑色高度限制

标签 java c++ algorithm tree

我正在阅读有关 Red-Black Trees 的维基百科.

有人可以详细说明第 5 个限制吗:

  1. A node is either red or black.

  2. The root is black.

  3. All leaves (NIL) are black. (All leaves are same color as the root.)

  4. Both children of every red node are black.

  5. Every simple path from a given node to any of its descendant leaves contains the same number of black nodes.

自从给出示例 RBT 在 the final case of insertion 之后的状态后,我很难理解它(wiki 上的案例 5)给我们:

Wiki Red Black tree

4和5不比1,2,3多一个黑节点吗?

最佳答案

1、2、3、4、5都是子树。我们知道树 1、2 和 3 中根节点的颜色为黑色。我们不知道节点 1-5 中的任何一个是否是叶节点,因为这种插入情况可能已在某个 N 上递归调用,该 N 是新插入节点的祖父节点(来自插入情况 3)。

旋转前后,子树1、2、3下均有一个黑色节点(前G,后P),子树4、5下有两个黑色节点(前G、U,后P、U) .子树1、2、3比子树4、5多一个黑色节点。

关于java - 红黑树-黑色高度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15051824/

相关文章:

java - NoClassDefFoundError 在带有 java 1.4.2_07-b05 的 Tomcat 上具有长类名

c++ - Win32 C++ : Child window is not visible

arrays - 我应该使用哪种算法从多维数组中提取数组?

java - 应用程序在 Android 6.0 API 23 上崩溃(但在 Android 9、API 28 上则不然)

java - 替换字符串中的\n

c++ - 使用 INET 扩展模块未正确执行覆盖代码

c++ - Ubuntu:C++::Boost库升级

java - 如何生成随机图?

algorithm - 是否有一种有效的算法可以找到哪些 boolean 函数的组合与给定 boolean 函数的输出相匹配?

java - 是否可以使用 PowerMock 来模拟新文件的创建?