【问题标题】:Python: Recursive function for browsing all tree nodesPython:用于浏览所有树节点的递归函数
【发布时间】:2014-09-02 22:06:17
【问题描述】:

我正在尝试创建一个递归函数来查找树中的所有节点。我的函数,我们将其命名为 child(),它可以找到当前节点的所有子节点并返回它们的列表。

global nodes
nodes = []

def func():
    if len(child(c))==0:
        return []
    else:
        for ch in child(c):
            nodes.append(ch)
            return func(ch)

它似乎由于某种原因不起作用。

您是否知道出了什么问题,或者问题应该出在我的代码中的其他地方?

编辑:问题可能是

if len(child(c))==0: return [] 它应该检查另一个孩子而不是返回 []。但是不知道放什么。

【问题讨论】:

  • 它以什么方式不起作用?
  • @PadraicCunningham 不,它没有,但如果这是正确的,问题可能出在我的代码中的其他地方。
  • @PadraicCunningham 可能发现了问题。 if len(child(c))==0: return 但它应该检查下一个邻居...
  • 如果孩子c的len为0怎么会有邻居?
  • @PadraicCunningham 让我们看看这张图片en.wikipedia.org/wiki/Binary_tree#mediaviewer/… 例如节点 11 没有子节点,但它有一个在这种情况下不会被检查但应该检查的邻居。

标签: python recursion tree


【解决方案1】:

这是因为for内部的return语句,该函数只传递给列表中的第一个孩子。

这应该可以工作

global nodes
nodes = []

def func(c):
    for ch in child(c):
        nodes.append(ch)
        func(ch)

【讨论】:

    猜你喜欢
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2010-12-12
    • 2021-08-03
    • 2018-12-02
    相关资源
    最近更新 更多