Algorithm 红/黑树上的孩子?

Algorithm 红/黑树上的孩子?,algorithm,red-black-tree,Algorithm,Red Black Tree,根据红黑树的定义,树必须具有以下属性: 节点为红色或黑色 根是黑色的。(这条规则有时被省略。因为根总是可以从红色变为黑色,但不一定 反之亦然,此规则对分析几乎没有影响。) 所有的叶子(无)都是黑色的。(所有叶子的颜色与根的颜色相同。) 每个红色节点的两个子节点都是黑色的 从给定节点到其任何子代叶的每个简单路径都包含相同数量的黑色节点 什么是阻止某人将每个节点变为黑色?您引用的最后一条规则是“从给定节点到其任何后代叶子的每个简单路径都包含相同数量的黑色节点。” 如果所有节点均为黑色,则从根到任何叶

根据红黑树的定义,树必须具有以下属性:

  • 节点为红色或黑色
  • 根是黑色的。(这条规则有时被省略。因为根总是可以从红色变为黑色,但不一定 反之亦然,此规则对分析几乎没有影响。)
  • 所有的叶子(无)都是黑色的。(所有叶子的颜色与根的颜色相同。)
  • 每个红色节点的两个子节点都是黑色的
  • 从给定节点到其任何子代叶的每个简单路径都包含相同数量的黑色节点

  • 什么是阻止某人将每个节点变为黑色?

    您引用的最后一条规则是“从给定节点到其任何后代叶子的每个简单路径都包含相同数量的黑色节点。”


    如果所有节点均为黑色,则从根到任何叶的路径必须包含相同数量的节点。换句话说,所有的叶子都在同一个深度,所以这只可能是一片叶子。

    这是可能的。但为了保持条件5,有时可能需要将节点染成红色

    例如,考虑下面的例子。

      a
     / \
    b   c
    
    这里所有节点都可以是黑色的

    现在如果你想插入一个新节点,你会选择哪种颜色?红色因为如果选择黑色,则不满足条件5。所以基本上你可以继续插入红色节点,除非任何条件(1-4)没有被破坏