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

Math 根据树的大小计算插入级别,math,data-structures,graph,language-agnostic,tree,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?如果高度为h,则存在的节点数量由 1+2+3+…+h=h(h+1)/2 这意味着一个简

如果我有一个如下所示的图形结构

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?

如果高度为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=h2+h

0=h2+h-2n

现在你有了一个二次方程(在h中),你可以通过求解直接得到h的值。解决办法是

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

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

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

直接回h


希望这有帮助

我已经删除了语言标签,因为它们似乎与您的问题无关。如果其中一个是合适的,请说明我们如何提供目标信息。你在寻找高度吗?@turbo是的,我想你可以说你假设树是最佳平衡的吗?此外,树的父元素通常不共享子元素;但这就是你所描述的。你确定你的例子是正确的吗?