Algorithm 如何创建具有最大高度的红黑树?
红黑树的最大高度为Algorithm 如何创建具有最大高度的红黑树?,algorithm,binary-tree,red-black-tree,Algorithm,Binary Tree,Red Black Tree,红黑树的最大高度为2*log(n+1),因此如果节点数为15,则最大高度应为2*log(16)或8。我一直在尝试绘制一棵高度8的红黑树,同时只使用15节点,但如果不打破红黑树的规则,我无法这样做。如何使用15节点创建高度为8的红黑树?从CLR读取的伪代码。在应用任何旋转来更改颜色或平衡树之前,在树中新插入红色节点时,似乎可以达到最大高度。以下树演示了外部节点为3,最大高度为4的情况: black(h=4) / \ nul red(h=3)
2*log(n+1)
,因此如果节点数为15
,则最大高度应为2*log(16)
或8
。我一直在尝试绘制一棵高度8
的红黑树,同时只使用15
节点,但如果不打破红黑树的规则,我无法这样做。如何使用15
节点创建高度为8
的红黑树?从CLR读取的伪代码。在应用任何旋转来更改颜色或平衡树之前,在树中新插入红色节点时,似乎可以达到最大高度。以下树演示了外部节点为3,最大高度为4的情况:
black(h=4)
/ \
nul red(h=3)
/ \
nul red (h=2)
/ \
nul nul (h=1)
然后,树将旋转并通过向左旋转来修复新插入的红色节点
black(h=3)
/ \
red red(h=2)
/ \ / \
nul nul nul nul(h=1)
由此产生的高度降低并满足所有要求。至少有两个原因导致h(根)≤ 2·log2(n+1)不产生严格的上限:
然而,证明的目的不是要有一个尽可能严格的上限,而是要有一个足够好的上限,以得出h(root)=O(log(n))2log(16)不是8的结论。@500 InternalServerError我假设OP的意思是log-base-2,而不是log-base-10,正如人们通常对二叉树所做的那样,这个公式是高度的上限,但实际上并没有计算出可达到的最大值height@Dukeling:我来自哪里,log2(16)=4。@500 InternalServerError是的,所以2log2(16)=8。