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