Python-获取树中所有 child 的高度

标签 python recursion tree

我无法想象一种递归获取普通树(非 BST)中所有子节点高度的方法。

对于 BST 来说,这是相当明显的,因为只有两个节点。鉴于每个节点可能有多个子节点,您将如何做到这一点?

如何获取普通树中所有子节点高度的列表?

我无法画图,因为我的代表人数不足 10 人,但假设我有一棵树,有多个 child 。这些子节点中的每一个最终都会导致不同的叶节点。我想要从根节点到叶节点的每个路径的高度列表。你会怎样做呢?

我知道:

def height(t):
    if not t.children:
        return 1
    else:
        return max(height(c) for c in t.children) + 1

显然会返回最大高度,但我想不出一种方法可以递归地为到树末端的每条路径执行此操作。我不想要最大高度,我想要所有高度。

最佳答案

这很简单,你应该传递另一个参数,level,它由 1 + 节点和根之间的连接数定义

当到达叶子时,将级别值添加到全局列表中,此时级别值将是根到叶子之间的路径长度

运行结束时,全局列表将包含所有高度

heights = []

def height(t, level=0):
    if not t.children:
        heights.append(level)
    else:
        for c in t.children:
            height(c, level+1) 

关于Python-获取树中所有 child 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29290084/

相关文章:

python - 'max_pooling2d_3/MaxPool' 1 减 2 导致的负维度大小

python - Numpy 列减法;从 (k,) 数组中的值减去 (k,n) 数组

java - 递归 Fib 风格函数变成迭代函数?

java - 检查list中的元素是否是12的倍数

java - Vaadin JPAContainer 和树拖放

Python平台独立的获取系统信息的方式

java - 递归返回链表中的元素数量

c# - 如何在遍历树结构时匹配路径

python - ElementTree find() 总是返回 None

python - 我的 python 代码一般都很慢,这正常吗?