【问题标题】:Can we draw a RB tree with 8 black nodes and 12 red nodes?我们能画出一棵有 8 个黑色节点和 12 个红色节点的 RB 树吗?
【发布时间】:2012-04-03 10:15:45
【问题描述】:

我在 stackoverflow 上看到了类似的问题 here,但没有回答(清楚地)。

我可以尝试构建这样的树(8 个黑色节点和 12 个红色节点),而不会使 5 个 RB 树中的任何一个无效(但到目前为止我还不能这样做);

  1. 节点不是红色就是黑色
  2. 根是黑色的
  3. 所有叶子都是黑色的
  4. 每个红色节点的两个孩子都是黑色的
  5. 从给定节点到其任何后代叶子的每条简单路径都包含相同数量的黑色节点。

但我真的对更优雅的答案很感兴趣(除了尝试看看它是否有效)。

编辑:在叶子被算作黑色的情况下,很明显这样的树是不可能构建的。但是如果叶子不被算作黑色节点(8个非叶子节点)怎么办

【问题讨论】:

    标签: graph-theory red-black-tree


    【解决方案1】:

    根据规则 3 和 4,红色节点不能多于黑色节点,因为将红色节点添加到树中必然会添加黑色节点。这是如果您将 rb 树的叶子视为节点(您的定义)。

    【讨论】:

    • 感谢您的回答,我编辑了我的问题以使其更清楚。我比较关心的是叶子(空指针)不计入8个黑色节点的情况
    • 红节点不能多于黑节点吗? 2 1/ \3 怎么样,其中 1 和 3 是红色,2 是黑色?还有其他树木红色超过黑色。 2 是根节点。
    • @SJHowe "3. 所有的叶子都是黑色的"
    猜你喜欢
    • 1970-01-01
    • 2022-12-10
    • 2011-09-18
    • 2014-01-13
    • 2011-04-23
    • 2022-10-13
    • 1970-01-01
    • 2020-11-29
    • 2017-03-02
    相关资源
    最近更新 更多