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

二叉树层序遍历代码错误排查:输出顺序不符问题咨询

二叉树层序遍历错误分析与修正

你的问题出在使用了栈的弹出逻辑而非队列,层序遍历的核心是依靠队列「先进先出(FIFO)」的特性按层级顺序访问节点,而你的代码实现成了栈的「先进后出(LIFO)」行为。

具体错误点

你用了que.pop(),这个方法默认从列表末尾弹出元素。比如当处理节点2时,你先将左孩子3加入队列,再加入右孩子5,此时队列是[3,5],pop()会取出末尾的5而非头部的3,导致右子树先被访问,最终输出顺序和预期不符。

修正方法

把que.pop()改成que.pop(0),这个方法会从列表头部弹出元素,完全符合队列先进先出的要求,这样就能正确按层级顺序遍历节点。

修正后的代码:

def levelOrder(root):
    que = []
    que.append(root)
    while que != []:
        coot = que.pop(0)  # 改为从队列头部弹出元素
        print(coot.data, end=" ")

        if coot.left is not None:
            que.append(coot.left)

        if coot.right is not None:
            que.append(coot.right)

内容的提问来源于stack exchange,提问作者Hansel Gavin Dias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:10:32