LeetCode102
1.BFS解法
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> que;
vector<vector<int> > ans;
que.push(root);
while(que.size() != 0) {
vector<int> level; // level会更新 每次循环重置
int size = que.size(); // size记录同一层的节点个数
while(size--){
TreeNode* node = que.front(); // 取出node
que.pop();
if(!node){ // node为NULL就跳过
continue;
}
level.push_back(node -> val); // 更新level数组
que.push(node -> left); // 相邻node放入队列等待下一次
que.push(node -> right); // 相邻node放入队列等待下一次
}
if(level.size()){
ans.push_back(level); // 一层全部处理完放入ans
}
}
return ans;
}
};
参考题解