【问题标题】:Calculating the number of nodes in a tree when each level has diffrent number of nodes当每个级别具有不同的节点数时计算树中的节点数
【发布时间】:2013-11-11 20:19:59
【问题描述】:

假设我们有这种树: http://up400.siz.co.il/up1/tymmh2wylmmo.png

当树的高度为某个H时,树中的每一层可以有不同数量的节点。 例如,根层有3个节点(图中的“x”),下一层每个节点有2个节点(图中的“y”),下一层每个节点有4个节点(图中的“z” ),等等……

在给定 H 和节点数(每个节点)的情况下,有没有计算这种树的公式?

谢谢!

【问题讨论】:

    标签: tree binary-tree computer-science nodes


    【解决方案1】:

    递归公式很明显:

    def node_count(level):
        n = number_of_children_for_level(level)
        if n == 0:
            return 1
        else:
            return 1 + n * node_count(level + 1)
    

    假设level的子节点数为3, 4, 2, 0,则节点总数为

    1 + 3 * (1 + 4 * (1 + 2 * 1))
    

    【讨论】:

      【解决方案2】:

      如果树是完整的,那么……

      • 每个叶子下面的子树有 1 个节点。
      • 每个二级节点下面的子树有 1 * 4 + 1 = 5 个节点。
      • 每个三级节点下面的子树有 5 * 2 + 1 = 11 个节点。
      • 完整的树有 11 * 3 + 1 = 34 个节点。

      所以一般公式是 ((((m + 1) * n + 1) ... * p + 1) * q + 1),其中 m...q 是每个级别上的节点数.或者你可以递归地说size_n = size_{n - 1} * branchiness_n + 1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多