题目:
思考:
- 类似于广度优先遍历,但是区别在于需要分别记录每一层,广度优先遍历做不到分层
- 修改广度优先遍历,使用额外队列记录层信息
实现
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> ret;
if (!root) return ret;
queue<TreeNode*> q1;
queue<TreeNode* >q2;
q1.push(root);
vector<int> tempV;
while(!q1.empty()||!q2.empty())
{
auto t=q1.front();
q1.pop();
tempV.push_back(t->val);
if (t->left)
{
q2.push(t->left);
}
if (t->right)
{
q2.push(t->right);
}
if (q1.empty())
{
q1=q2;
ret.push_back(tempV);
tempV.clear();
queue<TreeNode*> tempQ;
q2.swap(tempQ);
}
}
return ret;
}
};