Problem 102. Binary Tree Level Order Traversal
-
题目描述
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 来实现此算法(在 python 下可直接用 list 充当 queue)。 -
代码实现
以下分别是 C++ 和 Python 的代码
class Solution {
public:
vector<vector<int> > levelOrder(TreeNode* root) {
vector<vector<int> > res;
if(!root)
return res;
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
vector<int> level;
int size = q.size();
while(size--){
TreeNode* cur = q.front();
q.pop();
level.push_back(cur->val);
if(cur->left)
q.push(cur->left);
if(cur->right)
q.push(cur->right);
}
res.push_back(level);
}
return res;
}
};
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
res = []
if root == None:
return res
queue = [root]
while(len(queue)):
level = []
for i in range(len(queue)):
cur = queue.pop(0)
level.append(cur.val)
if cur.left != None:
queue.append(cur.left)
if cur.right != None:
queue.append(cur.right)
res.append(level)
return res