103. Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:哒哒abc和vipkid知乎 编辑:程序博客网 时间:2024/05/29 08:45
/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ //4msclass Solution {public:    void inverse(vector<int> &temp)    {        for(int i=0;i<temp.size()/2;i++)        {            int j=temp[i];            temp[i]=temp[temp.size()-1-i];            temp[temp.size()-1-i]=j;        }    }    vector<vector<int>> zigzagLevelOrder(TreeNode* root) {        if(!root) return {};        vector<vector<int>> v;        queue<TreeNode*> q ;        q.push(root);        int i=1,l=0;        bool flag=false;        vector<int> temp;        while(!q.empty())        {            TreeNode* tmp=q.front();            if(tmp->left&&++l) q.push(tmp->left);            if(tmp->right&&++l) q.push(tmp->right);            temp.push_back(tmp->val);            if(--i==0)            {                if(flag) inverse(temp);                v.push_back(temp);                temp.clear();                flag=!flag;                i=l;                l=0;            }            q.pop();        }        return v;    }};
0 0