102. Binary Tree Level Order Traversal
广度优先搜索
将每个结点的层号记录下。
cpp
/**
* 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<vector<int>> res;
if(!root) return res;
res.resize(2000);
queue<tuple<TreeNode*,int>> Q;
Q.push(make_tuple(root,0));
tuple<TreeNode*,int> temp;
int maxlevel = 0;
while(!Q.empty()){
temp = Q.front();
res[get<1>(temp)].push_back(get<0>(temp)->val);
if(get<1>(temp) > maxlevel) maxlevel = get<1>(temp);
Q.pop();
if(get<0>(temp)->left)
Q.push(make_tuple(get<0>(temp)->left,get<1>(temp)+1));
if(get<0>(temp)->right)
Q.push(make_tuple(get<0>(temp)->right,get<1>(temp)+1));
}
res.resize(maxlevel+1);
return res;
}
};