题目:
分析:
可以直接使用反转函数。
也可以使用vector的inset
也可以借助一个栈,来实现。
代码:reverse
class Solution {
public:
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
vector<vector<int> > vv;
if(root==NULL) return vv;
queue<TreeNode*> q1;
q1.push(root);
while(!q1.empty())
{
vector<int> v;
queue<TreeNode*> q2;
while(!q1.empty())
{
v.push_back(q1.front()->val);
if(q1.front()->left!=NULL) q2.push(q1.front()->left);
if(q1.front()->right!=NULL) q2.push(q1.front()->right);
q1.pop();
}
vv.push_back(v);
q1=q2;
}
for(int i=1;i<vv.size();i++,i++)
{
reverse(vv[i].begin(),vv[i].end());
}
return vv;
}
};
结果: