根据树的大小计算插入级别

时间:2014-02-05 17:27:49

标签: math data-structures graph language-agnostic tree

如果我的图形结构如下所示

a         level-1 
b c       level-2
c d e     level-3
e f g h   level-4
......    level-n

a points to b and c 
b points to c and d 
c points to d and e 
and so on 

如何根据图形/树的大小(现有节点数)计算n?

1 个答案:

答案 0 :(得分:2)

如果高度为h,则存在的节点数由

给出
  

1 + 2 + 3 + ... + h = h(h + 1)/ 2

这意味着一个简单的选择是获取节点的总数n并进行简单的二进制搜索以找到h的正确值,使得h(h + 1)/ 2 = n。

或者,由于n = h(h + 1)/ 2,您可以注意到

  

n = h(h + 1)/ 2

     

2n = h 2 + h

     

0 = h 2 + h - 2n

现在你有一个二次方程(在h中)你可以解决直接取回h的值。解决方案是

  

h =( - 1±√(1 + 8n))/ 2

如果你采用负分支,你会得到一个负数,所以你应该采取正分支并计算

  

( - 1 +√(1 + 8n))/ 2

直接回来h。

希望这有帮助!

相关问题