我下周将参加考试算法考试,并为此做准备。其中一个问题让我很难过。
“我们可以绘制一个有7个黑色节点和10个红色节点的红黑树吗?为什么?”
听起来很快就可以回答,但我无法理解它。
CRLS给出了具有n个内部节点的RB树的最大高度:2 * lg(n + 1)。
我认为问题可以单独用这个引理来解决,但我不确定。
任何提示?
答案 0 :(得分:1)
由于这是考试准备,我不想直接给你答案,但我认为你需要考虑的是控制你如何建立红黑树的属性:
(从维基百科页面中窃取这些内容:http://en.wikipedia.org/wiki/Red-black_tree)
根据您列出的节点数量,您是否可以满足所有这些属性?
答案 1 :(得分:1)
答案很简单。
我们知道红色节点只能有黑色父节点。节点将是每个黑色节点的两个子节点都是红色的,因此,每个黑色节点都有红色父节点。因此,对于'n'黑节点'2n'红色节点是可能的。
这样想:
希望这有助于您查看解决方案。
答案 2 :(得分:0)
答案关键取决于您的RB树是否在叶子上使用黑色虚拟节点,如果是,则它们包含在七个黑色节点的计数中。如果没有,请考虑一个包含七个黑节点的完整树
*
/ \
* *
/\ /\
* * * *
添加十个红色节点不会有太多麻烦。