问题描述
据我了解,二叉树不必充满。但是,似乎RBT一定要装满(有时孩子是NIL)。是真的,还是我错过了什么?
解决方法
从根节点到任何给定红黑树的所有叶节点的路径都具有相同数量的黑节点。从这种意义上讲,我想您可以说红黑树总是“满”的,但我认为这不是一个非常有用的定义。
红黑算法的一般思想是限制总路径最短的叶节点和总路径最长的叶节点之间的叶节点总高度的实际最大差异(不仅仅是黑色高度)。如果以此为基础,则如果所有叶节点的总高度相同(则正常的二叉树在所有叶子的深度相同时就已满),则RB树为“满”,而RB树不必充满。
,不。红黑树并不总是充满。实际上,这很少发生。您可以通过阅读第三版的《算法介绍》(Cormen,第308页)了解更多有关此问题的信息(第310页上有一些插图说明了答案,由于版权原因,我没有显示它们)。