当前位置: 首页 > 知识库问答 >
问题:

当每一层有不同数量的节点时,计算树中的节点数量

隗嘉歆
2023-03-14

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

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

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

谢谢

共有2个答案

南门欣怡
2023-03-14

如果这棵树是完整的,那么。。。

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

所以一般公式是(((m1)*n1)…*p1)*q1),其中m。。。q是每个级别上的节点数。或者你可以递归地说,size_n=size_{n-1}*branchiness_n1

萧德庸
2023-03-14

递归公式很明显:

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))
 类似资料:
  • 问题陈述 我无法理解我的代码出了什么问题,也很难理解下面的约束。 我的伪代码: 遍历树级别顺序并构造数组表示(输入实际上作为单个根给出,但它们使用数组表示来显示完整的树) 循环访问此数组表示形式,跳过空节点 对于每个节点,让我们称之为X,向上迭代,直到我们到达根检查,看看是否在路径中的任何一点,

  • 我是 D3 的新手。因此,我正在尝试呈现一个图形,其中两个或多个孩子可以具有相同的父级。我想知道如何使链接再次定向到同一节点?我有断开的链接.. 任何帮助都是巨大的。 这是我的代码...

  • 我需要创建一个递归方法,将二叉查找树的根节点作为参数。这个递归方法将返回整个二叉查找树中内部节点总数的int值。 这就是我到目前为止所拥有的: 有没有更好的办法?我还坚持寻找迭代解。

  • 我遇到了这个问题,似乎在任何地方都找不到解决办法。 给定一个二叉树,其中每个节点都包含一个数字,表示其子树中剩余节点的数量,编写一个函数,返回第n个按顺序遍历的节点。 查找按序遍历的第n个节点相当简单,但如何使用关于左节点数的信息来改进该过程?

  • 如果我没弄错的话,树通常是一个列表,其中的元素按特定顺序排列。孩子们不在他们自己的子列表中,他们都在同一个列表中。 所以,我试图创建一个Tree类,其中包含TreeNodes(类)使用Tree类中的List。 我如何跟踪父母/孩子/叶子?如果父母“父母1”,有两个孩子“孩子A”和“孩子B”,我如何将他们联系在一起?

  • 本文向大家介绍如何打印二叉树每层的节点?相关面试题,主要包含被问及如何打印二叉树每层的节点?时的应答技巧和注意事项,需要的朋友参考一下 考察点:二叉树   实现代码: