解題思路
用兩個 queue,一個是現在的 level 的所有 node,一個是下個 level 的 node。
當當前 level 的 node 的 queue 清空,就換成下個 level。一直重複直到空了為止。
程式碼
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> ans;
if(root == nullptr)
return ans;
queue<TreeNode*> q1;
queue<TreeNode*> q2;
int num = 1;
q1.push(root);
vector<int> v;
while(!q1.empty())
{
v.push_back(q1.front()->val);
if(q1.front()->left != nullptr)
q2.push(q1.front()->left);
if(q1.front()->right != nullptr)
q2.push(q1.front()->right);
cout << v[v.size() - 1] << " "<< v.size() << endl;
q1.pop();
if(q1.empty())
{
swap(q1, q2);
ans.push_back(v);
v.clear();
}
}
return ans;
}
};
沒有留言:
張貼留言