递归
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
vector<vector<int>> ret;
levelOrderHelper(root,1,ret,0);
return ret;
}
void levelOrderHelper(TreeNode* root, int level,vector<vector<int>> &ret,int order){
if(!root)
return;
if(ret.size()<level){
ret.push_back(vector<int>());
}
if(order%2>0)
ret[level-1].insert(ret[level-1].begin(),root->val);
else
ret[level-1].push_back(root->val);
if(root->left) levelOrderHelper(root->left,level+1,ret,order+1);
if(root->right) levelOrderHelper(root->right,level+1,ret,order+1);
}
Last updated
Was this helpful?