我不知道为什么我们需要NIL节点作为红黑树中的叶节点。谁能解释其目的?
答案 0 :(得分:4)
NIL是一种特殊类型的节点,它指示其他树(例如二叉搜索树和AVL树)中的叶节点
NIL节点有助于平衡黑色高度
删除节点时,如果没有子节点,则黑色高度立即传递给子节点,因此必须传递某人...所以NIL节点对此有所帮助
插入新节点nil节点时的另一种方法可以帮助我们识别遇到的情况(红色叔叔或黑色叔叔),有时叔叔可以成为NIL节点
答案 1 :(得分:0)
红黑树不需要 NIL 节点。实际上,在该结构的典型实现中,完全省略了 NIL 节点以减少内存消耗。此外,我们可以改变红黑树的定义,以避免提及 NIL 节点,而不会失去结构的任何基本特性:
将红黑树定义为具有附加属性的二叉搜索树
取任何有 NIL 节点的红黑树,擦除 NIL 节点,它就会满足上面的定义。反之,取一棵满足上述定义的树,在每个子节点少于两个的非 NIL 节点下放置黑色 NIL 节点,这样它们就有两个子节点,按照标准定义,这将是一棵红黑树。>