Leetcode Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:oracle数据库查询语句 编辑:程序博客网 时间:2024/06/07 21:55

题意:之字形遍历树。

思路:BFS,注意奇数层和偶数层不同的遍历方向。

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int> > re;    vector<vector<int>> zigzagLevelOrder(TreeNode* root) {        vector<TreeNode*> t;        t.push_back(root);                bfs(t, 0);        return re;    }        void bfs(vector<TreeNode*> p, int level) {        if(p.size() == 0) return;                vector<TreeNode*> temp;        vector<int> tempre;        for(int i = 0; i < p.size(); ++ i) {            if(p[i] == NULL) continue;            temp.push_back(p[i]->left);            temp.push_back(p[i]->right);        }                if(level % 2 == 0) {            for(int i = 0; i < p.size(); ++ i) {                if(p[i] == NULL) continue;                tempre.push_back(p[i]->val);            }        }        else {            for(int i = p.size() - 1; i >=0; i --) {                if(p[i] == NULL) continue;                tempre.push_back(p[i]->val);            }        }        if(tempre.size() == 0) return;                re.push_back(tempre);        bfs(temp, level + 1);        return;    }};


0 0
原创粉丝点击