高度为h的红黑树中最小节点数的公式是什么?

时间:2017-02-09 09:02:16

标签: algorithm binary-search-tree red-black-tree

我已经读过它是log(n + 1)< = h< = 2 * log(n + 1)其中log是基数2.但是,当在几个已知的最小高度上尝试这个时,它并不总能奏效。

到目前为止,我知道:

对于h = 1,最小节点数= 2。

对于h = 2,最小节点= 4.

对于h = 3,最小节点= 10.

然而,这些完全是通过使用红黑树的规则来追踪它。

在尝试找到这个时,我是否应该记下黑色高度,或者我的方法/计算是完全错误的?

1 个答案:

答案 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); }