Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:阿里云200m怎么申请 编辑:程序博客网 时间:2024/05/16 18:04
-----QUESTION-----

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).

For example:
Given binary tree {3,9,20,#,#,15,7},

-----SOLUTION-----


class Solution {public:    vector<vector<int>> zigzagLevelOrder(TreeNode *root) {        result.clear();        if(!root) return result;                flag = true;        vector<int> level;        TreeNode * current;        queue<TreeNode *> queToPop;        queue<TreeNode *> queToPush;        queToPop.push(root);        while(!queToPop.empty())        {            while(!queToPop.empty())            {                current = queToPop.front();                queToPop.pop();                level.push_back(current->val);                if(current->left)                {                    queToPush.push(current->left);                }                if(current->right)                {                    queToPush.push(current->right);                }            }                       if(!flag) reverse(level.begin(),level.end());            result.push_back(level);            level.clear();            swap(queToPop, queToPush);            flag = !flag;        }        return result;    }private:    vector<vector<int>> result;    bool flag;};

0 0
原创粉丝点击