【问题标题】:Python - Get height of all children in TreePython - 获取树中所有孩子的高度
【发布时间】:2015-05-31 03:43:56
【问题描述】:

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

对于BST,这是相当明显的,因为只有两个节点。考虑到每个节点可能有多个子节点,你会怎么做?

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

因为我的代表人数不足 10 人,所以我不会画画,但是说我有一棵有多个孩子的树。这些孩子中的每一个最终都会导致不同的叶节点。我想要从根节点到叶节点的每个路径的高度列表。你会怎么做呢?

我知道:

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

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

【问题讨论】:

    标签: python recursion tree


    【解决方案1】:

    很简单,你应该传递另一个参数,级别定义为 1 + 节点和根之间的连接数

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      • 2012-01-29
      • 2018-01-29
      相关资源
      最近更新 更多