【剑指offer】 面试题32 - I. 从上到下打印二叉树

问题描述

面试题32 - I. 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回:

[3,9,20,15,7]

分析

层次遍历,先存根节点,若空则直接返回空[]

然后开始访问根节点的左子树,右子树,接着是左子树的左子树、右子树,右子树的左子树、右子树。是一个前进先出,队列

所以:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都打印出来为止。

 

解题

# 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=[]
        # res.append(root)
        temp=[root]
        while(len(temp)):
            cur=temp.pop(0)#弹出第0个,默认是最后一个
            res.append(cur.val)
            if(cur.left):
                temp.append(cur.left)
            if(cur.right):
                temp.append(cur.right)
        return res

 

posted @ 2020-05-17 16:09  Flora1014444  阅读(91)  评论(0编辑  收藏  举报