我已经读过它是log(n + 1)< = h< = 2 * log(n + 1)其中log是基数2.但是,当在几个已知的最小高度上尝试这个时,它并不总能奏效。
到目前为止,我知道:
对于h = 1,最小节点数= 2。
对于h = 2,最小节点= 4.
对于h = 3,最小节点= 10.
然而,这些完全是通过使用红黑树的规则来追踪它。
在尝试找到这个时,我是否应该记下黑色高度,或者我的方法/计算是完全错误的?
答案 0 :(得分:1)
我们可以递归地找到最小节点数
count_minimum_node将返回达到高度h的节点数。
int count_node(int h)
{
int sum = h;
for(int i=1; i<=h-2; i++) sum += count_node(i);
return sum;
}
int count_minimum_node(int h) { return count_node(h+1); }