Data structures 为什么红黑树的叶节点总是为零,这意味着什么?

Data structures 为什么红黑树的叶节点总是为零,这意味着什么?,data-structures,red-black-tree,Data Structures,Red Black Tree,我不知道为什么我们需要NIL节点作为红黑树的叶子节点。有人能解释一下它的用途吗?NIL是一种特殊类型的节点,它表示其他树(如二进制搜索树和AVL树)中的叶节点 零节点有助于平衡黑色高度 当您删除一个节点时,黑色高度将立即传递给子节点,如果它没有子节点,则必须传递给某人。。。因此,NIL节点有助于实现这一点 另一种方法是,当您插入一个新节点时,nil node可以帮助我们确定我们所面临的情况(红叔叔或黑叔叔),有时红叔叔可能是nil node红黑树不需要nil节点。实际上,在该结构的典型实现中,N

我不知道为什么我们需要NIL节点作为红黑树的叶子节点。有人能解释一下它的用途吗?

NIL是一种特殊类型的节点,它表示其他树(如二进制搜索树和AVL树)中的叶节点

零节点有助于平衡黑色高度

当您删除一个节点时,黑色高度将立即传递给子节点,如果它没有子节点,则必须传递给某人。。。因此,NIL节点有助于实现这一点


另一种方法是,当您插入一个新节点时,nil node可以帮助我们确定我们所面临的情况(红叔叔或黑叔叔),有时红叔叔可能是nil node

红黑树不需要nil节点。实际上,在该结构的典型实现中,NIL节点被完全省略以减少内存消耗。此外,我们可以修改红黑树的定义,以避免提及NIL节点,而不会丢失结构的任何基本特性:

将红黑树定义为具有以下附加属性的二叉搜索树:

  • 每个节点都拥有一个颜色属性,该属性为红色或黑色
  • 如果黑色节点只有一个子节点,则该子节点必须为红色且为叶子
  • 红色节点要么是叶子,要么有两个黑色子节点
  • 从根到叶的所有路径必须具有相同数量的黑色节点

  • 取任意一棵具有NIL节点的红黑树,擦除NIL节点,它将满足上述定义。相反,取一棵满足上述定义的树,将黑色NIL节点放在每个子节点少于两个的非NIL节点下,这样它们就有两个子节点,根据标准定义,这将是一棵红黑树。

    谢谢!因此,它只是一个黑色的空节点,用于保持树的黑色高度。我说的对吗?主要是为了这个目的