leetcode-103-Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:电脑绘画软件 编辑:程序博客网 时间:2024/05/29 04:52
#include <iostream>#include <vector>using namespace std;//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>> zigzagLevelOrder(TreeNode* root) {        vector<vector<int>> myVec;        vector<TreeNode *> levVec;        if (!root) {            return myVec;        }        levVec.push_back(root);        myVec.push_back(vector<int>(1, root->val));        bool flag = false;        while (true) {            vector<TreeNode *> nextVec;            vector<int> numVec;            for (int i = 0; i < levVec.size(); i++) {                if (levVec[i]->left) {                    nextVec.push_back(levVec[i]->left);                    if (flag) {                        numVec.push_back(levVec[i]->left->val);                    } else {                        numVec.insert(numVec.begin(), levVec[i]->left->val);                    }                }                if (levVec[i]->right) {                    nextVec.push_back(levVec[i]->right);                    if (flag) {                        numVec.push_back(levVec[i]->right->val);                    } else {                        numVec.insert(numVec.begin(), levVec[i]->right->val);                    }                }            }            if (nextVec.size() == 0) {                break;            }            levVec = nextVec;            myVec.push_back(numVec);            flag = !flag;        }        return myVec;    }};int main(int argc, const char * argv[]) {    TreeNode three = TreeNode(3);    TreeNode nine = TreeNode(9);    TreeNode twenty = TreeNode(20);    TreeNode fifteen = TreeNode(15);    TreeNode seven = TreeNode(7);    three.left = &nine;    three.right = &twenty;    twenty.left = &fifteen;    twenty.right = &seven;    Solution s;    vector<vector<int>> res = s.zigzagLevelOrder(&three);    for (int i = 0; i < res.size(); i++) {        for (int j = 0; j < res[i].size(); j++) {            cout << res[i][j] << " ";        }        cout << endl;    }    return 0;}

0 0
原创粉丝点击