具有N个节点的完整二叉树的高度是多少?我正在寻找一个确切的答案,无论是楼层还是天花板价值。
答案 0 :(得分:13)
这是CEIL(log2(n+1))-1
编辑:根据维基百科,根节点(相当不直观?)不计入高度,因此公式为CEIL(log2(n+1))-1
。
答案 1 :(得分:8)
您不必执行CEIL(log2(n + 1)) - 1。
对于COMPLETE二叉树,答案很简单: FLOOR(LOG2(n))的
答案 2 :(得分:1)
我猜你可以使用Joachim提供的公式或只是做楼层日志(h)......这是你可以为任何二叉树做的最好的情况......因此,如果你的树例如已满,你就不会能够说这一定是真的......还记得在CS中你遇到的几乎每个日志都是基数2
答案 3 :(得分:0)
N是节点数,h是完整二叉树的高度:
2 ** h <= N <2 **(h + 1)
=> h <= ln2(N)
第一个不等式表示一个事实,即高度为h的完整二叉树的节点数大于高度为(h-1)的完整二叉树的节点数,而同时小于h的完整二叉树的节点数。一棵高度为h加上1的完整树。这是数学公式:
N_FULL_TREE(h-1)= 1 + 2 + 4 + ... + 2 **(h-1)= 2 ** h-1
N_FULL_TREE(h)= 1 + 2 + 4 + ... + 2 ** h = 2 **(h + 1)-1
=> N_FULL_TREE(h-1)
=> 2 ** h <= N <2 **(h + 1)