题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
http://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
层次遍历: 通过辅助栈,按层进行展开,不断弹出双端队列的头部,并将不为空的左右子树压入双端队列的尾部,这个过程中需要记录每层的数据多少,防止多弹出和少压入
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
#
# @param root TreeNode类
# @return int整型二维数组
#
class Solution:
def levelOrder(self , root ):
# write code here
if not root: return []
s = [root]
res = []
while s:
cur_len = len(s)
tmp_res = []
while cur_len:
node = s.pop(0)
tmp_res.append(node.val)
if node.left: s.append(node.left)
if node.right: s.append(node.right)
cur_len -= 1
res.append(tmp_res)
return res