前往此题

广度优先搜索

这题比较简单,使用迭代法很轻松就能解出来。
本题实际上求的是逐层遍历整个二叉树,按照从左至右的顺序依次打印。
这里我们只需要借助队列queue将每层的节点放入其中,按照先进先出的规则依次访问节点值并放入最终答案res中即可。

代码

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def levelOrder(self, root: TreeNode) -> List[int]:
        if not root: return []
        res = []
        queue = collections.deque()
        queue.append(root)
        while queue:
            node = queue.popleft()
            res.append(node.val)
            if node.left: queue.append(node.left)
            if node.right: queue.append(node.right)
        
        return res