103. Binary Tree Zigzag Level Order Traversal LeetCode

来源:互联网 发布:随机域名生成器 编辑:程序博客网 时间:2024/06/05 12:00

题意:给出一棵二叉树,之字形的记录每一层的内容。
题解:BFS+双端队列,然后交替的去队首和队尾。

class Solution {public:    vector<vector<int>> zigzagLevelOrder(TreeNode* root) {        vector<vector<int>> ans;        ans.clear();        if(root == NULL) return ans;        queue<TreeNode* > q;        q.push(root);        bool flag = true;        while(!q.empty())        {            int n = q.size();            vector<int> v;            v.clear();            deque<int> deq;            deq.clear();            for(int i = 1; i <= n; i++)            {                TreeNode* tmp = q.front();                if(tmp->left) q.push(tmp->left);                if(tmp->right) q.push(tmp->right);                q.pop();                deq.push_back(tmp->val);            }            while(!deq.empty())            {                if(flag)                {                    v.push_back(deq.front());                    deq.pop_front();                }                else                {                    v.push_back(deq.back());                    deq.pop_back();                }            }            ans.push_back(v);            flag = !flag;        }        return ans;    }};
0 0