题目:
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,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
这道题考察的主要是基于BFS的层序遍历,算是我第一次接触吧,所以有点没有头绪。主要是用queue与dequeue的思想一层一层的遍历,实际上难度不大。
代码:
class Solution:
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
res = []
if not root:
return res
queue = [root]
while len(queue) !=0:
res.append([node.val for node in queue])
new_queue = []
for node in queue:
if node.left:
new_queue.append(node.left)
if node.right:
new_queue.append(node.right)
queue = new_queue
return res