剑指offer 32 Ⅱ - 从上到下打印二叉树 - Python

96 阅读1分钟

题目描述:

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]
 

提示:节点总数 <= 1000


根据题目的描述可知,打印的顺序即层序遍历的顺序,每一层的输出作为最后结果的一个元素。

class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root: return []

        r = []
        q = [root]
        while q:
            t = []
            nextLayer = []
            root = q[0]
            for node in q:
                t.append(node.val)
                if node.left: nextLayer.append(node.left)
                if node.right: nextLayer.append(node.right)

            r.append(t)
            q = nextLayer

        return r