Python:遍历所有树节点的递归函数

0 投票
1 回答
1854 浏览
提问于 2025-04-18 13:03

我正在尝试写一个递归函数,用来找到树中的所有节点。我的这个函数,我们叫它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 [] 这段代码应该检查另一个子节点,而不是直接返回一个空列表。但我不知道该怎么改。

1 个回答

1

这是因为在循环里面有一个返回语句,这样的话,函数只会处理列表中的第一个元素。

这样写应该可以正常工作

global nodes
nodes = []

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

撰写回答