# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):def levelOrder(self, root):""":type root: Optional[TreeNode]:rtype: List[List[int]]"""# 注意要return 的是二维的listres = []if root is None:return resqueue = deque([root])while queue :level_len = len(queue)level = []for _ in range(level_len):#你的代码思路是正确的(用队列实现层序遍历,按层收集节点值),但存在一个关键问题:队列弹出元素的方向错误,导致每层节点的顺序可能颠倒。以下是修正后的代码及解释:问题分析:队列(Queue)的特性是 “先进先出(FIFO)”,而你使用了 queue.pop() 从队列尾部弹出元素(这是栈的 “后进先出” 操作),会导致当前层的节点被反向处理(例如,本应左到右的节点会变成右到左)。正确的做法是用 queue.popleft() 从队列头部弹出元素,符合层序遍历 “从左到右” 的顺序。node = queue.popleft()if node.left is not None:queue.append(node.left)if node.right is not None:queue.append(node.right)level.append(node.val)res.append(level)return res