题目:
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
题解:
BFS(广度优先搜索)。
这里我们我们可以用两个队列,以区别不同的层次。
访问a队列时,将其孩子加入b队列;访问b队列的时候,将其孩子加入a队列。
若访问完某队列之后,另一个队列仍为空,则遍历结束。
开始时,将root加入a队列,然后开始遍历。
Code:
class Solution:
# @param root, a tree node
# @return a list of lists of integers
def levelOrder(self, root):
ans = []
if root is None:
return ans
a = []
b = []
a.append(root)
while len(a) > 0:
tmp = []
for i in a:
tmp.append(i.val)
if not(i.left is None):
b.append(i.left)
if not(i.right is None):
b.append(i.right)
ans.append(tmp)
a = []
if len(b) == 0:
break
tmp = []
for i in b:
tmp.append(i.val)
if not(i.left is None):
a.append(i.left)
if not(i.right is None):
a.append(i.right)
ans.append(tmp)
b = []
return ans