迭代

vector<vector<int>> zigzagLevelOrder(TreeNode* root) {

vector<vector<int>> ret;

if(root == nullptr) return ret;

queue<TreeNode*> cur,nxt;

TreeNode* p;

cur.push(root);

vector<int> level;

int order;

while(!cur.empty()){

order=ret.size();

while(!cur.empty()){

p = cur.front();

cur.pop();

if(order%2>0)

level.insert(level.begin(),p->val);

else

level.push_back(p->val);

if(p->left) nxt.push(p->left);

if(p->right) nxt.push(p->right);

}

ret.push_back(level);

level.clear();

swap(cur,nxt);

}

return ret;

}

Last updated

Was this helpful?