当每个级别具有不同数量的节点时,计算树中的节点数

时间:2013-11-11 20:20:00

标签: tree binary-tree computer-science nodes

让我们说我们这种树: http://up400.siz.co.il/up1/tymmh2wylmmo.png

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

当给出H时,是否存在计算这类树的公式,并且给出了节点数(对于每个节点)?

谢谢!

2 个答案:

答案 0 :(得分: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)

假设级别的子级数为3, 4, 2, 0,则节点总数将为

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

答案 1 :(得分:0)

如果树已完成,那么......

  • 每个叶子下面的子树有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