递归

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?