剑指offer 32 - Ⅰ- 从上往下打印二叉树 - python

110 阅读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[int]:
        if not root: return []

        r = []
        q = [root]
        while q:
            root = q[0]
            r.append(root.val)
            if root.left:
                q.append(root.left)
            if root.right:
                q.append(root.right)
            
            q = q[1:]

        return r