我正在研究 CLRS 的红黑树。 我有两个关于讨论红黑树属性的部分的问题。 CLRS的内容如下:
红黑树是满足以下红黑属性的二叉树:
每个节点都是红色或黑色
根是黑色的
每片叶子(NIL)都是黑色的
如果节点为红色,则其子节点均为黑色
对于每个节点,从节点到后代叶子的所有简单路径都包含相同数量的黑色节点
首先,它说红黑树是二叉树。为什么他们没有说红黑树是二元搜索树。我认为红黑树的整个目的是在搜索树中保持平衡,以确保 logN 操作。第二,为什么红黑树上的叶子 NIL ?
在常规二进制树中,我们已经习惯了这个:
4
5 7
3 2 Nil Nil
Nil Nil Nil Nil
在这种情况下,3,2和7是叶子。为什么叶子被描述为CLRS中的Nil?
答案 0 :(得分:2)
在书中,他们将红黑树称为二进制搜索树,它正好在本章的开头。
同样在本章中,他们指出标记为nil
的节点是实际节点(称为 sentinels ),其字段与普通节点相同但具有color
具有固定值“black”的字段(其他字段可以设置为任意值);这些节点总是在树中显示为叶子。所以它与通常的BST不同,其中 leaf 是一个节点,其左子树和右子树都是nil
。