给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回其层次遍历结果:
[ [3], [9,20], [15,7] ]
层次遍历二叉树 并且每层需要分开保存
思路:记录每层的最后一个位置,利用None标志作为该层最后一个。用sqlist用于保存结点,tmp用于保存每层结点值
如果sqlist出队值为None,表示该层结束,则tmp加入到输出列表中,tmp重现置空。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
sqlist = []
ans = []
if root:
sqlist.append(root)
sqlist.append(None)
tmp = []
while(len(sqlist)):
p = sqlist[0]
sqlist.pop(0)
if(len(sqlist)==0):
ans.append(tmp)
break
if p == None:
ans.append(tmp)
tmp = []
sqlist.append(None)
else:
tmp.append(p.val)
if(p.left):
sqlist.append(p.left)
if(p.right):
sqlist.append(p.right)
return ans