【问题标题】:Calculating the level of insertion based on the size of the tree根据树的大小计算插入级别
【发布时间】:2014-03-02 07:05:40
【问题描述】:

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

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?

【问题讨论】:

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

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


【解决方案1】:

如果高度为 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。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2012-03-08
    • 1970-01-01
    • 2012-10-04
    • 2018-06-17
    相关资源
    最近更新 更多