【剑指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