Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:新浪微博个性域名删除 编辑:程序博客网 时间:2024/06/06 21:01

题目: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).

思路:层序遍历的一个小小的变种。偶数层把顺序逆置。

代码:

/** * Definition for binary tree * 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> > result;        if(root == NULL)            return result;        vector<int> level;        queue<TreeNode *> q;        q.push(root);        q.push(NULL);        int i = 0;                while(!q.empty())        {            TreeNode *p = q.front();            q.pop();            if(p == NULL)            {                if(i&1 == 1)                    reverse(level.begin(), level.end());                i++;                result.push_back(level);                level.clear();                if(!q.empty())                    q.push(NULL);            }            else            {                level.push_back(p->val);                if(p->left != NULL)                    q.push(p->left);                if(p->right != NULL)                    q.push(p->right);            }        }        return result;    }};



0 0
原创粉丝点击