You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python编写Breadth-first traversal代码仅返回单个节点问题求助

Python广度优先遍历代码错误排查

错误点

  • return语句缩进错误,当前位于while循环内部,第一次循环处理完根节点后就直接返回,没有执行后续遍历逻辑,是输出仅为['A']的直接原因。
  • 未判断左右子节点是否为空就直接加入队列,遍历到叶子节点的空属性时会触发AttributeError报错。

修正后完整代码

from collections import deque
class Tree:
    def __init__(self,data):
        self.data = data
        self.right = None
        self.left = None
    
    def bft(root):
        list_nodes = []
        # 边界处理:根节点为空直接返回空列表
        if not root:
            return list_nodes
        traversal_queue = deque([root])
        while len(traversal_queue)>0:
            node = traversal_queue.popleft()
            list_nodes.append(node.data)
            # 仅添加非空的子节点到队列
            if node.left:
                traversal_queue.append(node.left)
            if node.right:
                traversal_queue.append(node.right)
        # 所有节点遍历完成后再返回结果
        return list_nodes

n1 = Tree('A')
n2 = Tree('B')
n3 = Tree('C')
n4 = Tree('D')
n1.left = n2
n1.right = n3
n2.left = n4
print(Tree.bft(n1))

运行后输出:['A', 'B', 'C', 'D'],符合预期。

内容的提问来源于stack exchange,提问作者jacobdavis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 08:09:03