class Solution {
public:
vector<vector<int> > zigzagLevelOrder(TreeNode *root){
vector<vector<int>>res;
if(root==NULL)
return res;
vector<TreeNode>path;
vector<int>path_val;
path_val.push_back(root->val);
path.push_back(*root);
res.push_back(path_val);
int tag=1;
trasverse(res,path,tag);
return res;
}
void trasverse(vector<vector<int>>&res,vector<TreeNode>&path,int &tag)
{
vector<int>path_val;
vector<TreeNode>temppath;
for(int i=0;i<path.size();i++)
{
if(path[i].left!=NULL)
temppath.push_back(*path[i].left);
if(path[i].right!=NULL)
temppath.push_back(*path[i].right);
}
path.clear();
if(temppath.size()==0)
return ;
if(tag==0)
for(int i=0;i<temppath.size();i++)
{
path_val.push_back(temppath[i].val);
}
else
for(int i=temppath.size()-1;i>=0;i--)
{
path_val.push_back(temppath[i].val);
}
tag=1-tag;
res.push_back(path_val);
trasverse(res,temppath,tag);
}
};
这代码写的,什么奇葩的错误都会犯,别提dp了,连链表的反转的写不好