首页 > 其他 > 详细

zigzag 层序遍历

时间:2020-12-01 09:04:00      阅读:33      评论:0      收藏:0      [点我收藏+]

题目描述
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{3,9,20,#,#,15,7},

该二叉树之字形层序遍历的结果是
[
[3],

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > zigzagLevelOrder(TreeNode* root) {
       
        // write code here
        deque<TreeNode*> dq;
        vector<vector<int>> res;
         if (root ==NULL)  return res;
        
        dq.push_back(root);
        int dir = 0;
        int size;
        while(dq.size()) {
            
            vector<int> vec;
            size = dq.size();
            
            while (size-- > 0) {
                
                if (dir % 2==0) {
                    TreeNode* x = dq.front();
                    dq.pop_front();
                    TreeNode *left = x->left;
                    TreeNode *right = x->right;
                    vec.push_back(x->val);
                    if (left) dq.push_back(left);
                    if (right) dq.push_back(right);

                }else{
                    TreeNode* x = dq.back();
                    dq.pop_back();
                    TreeNode * left = x ->left;
                    TreeNode * right = x->right;
                    if (right) dq.push_front(right);
                    if (left) dq.push_front(left);
                    

                    vec.push_back(x -> val);
                }
                
            }
            res.push_back(vec);
            ++dir;
            
        }
        return res;
        
    }
};

zigzag 层序遍历

原文:https://www.cnblogs.com/lyr-2000/p/14065686.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!