题目:
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
代码如下:(注意 len = Q.size(),不能直接在循环中替换)
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<int> level;vector<vector<int> > res;if(root == NULL)return res;queue<TreeNode*> Q;Q.push(root);while(!Q.empty()){int len = Q.size();for(int i = 0; i < len;i++){TreeNode* p = Q.front();Q.pop();level.push_back(p->val);if(p->left) Q.push(p->left);if(p->right) Q.push(p->right);}res.push_back(level);level.clear();}return res;}
};