二叉树Z形层序遍历

二叉树的之字形层序遍历

http://www.nowcoder.com/questionTerminal/47e1687126fa461e8a3aff8632aa5559

题目描述

给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)

解法

 vector<vector<int> > zigzagLevelOrder(TreeNode* root) {
        vector<vector<int>> ans;
        if (root == nullptr) {
            return ans;
        }
        queue<TreeNode*> que;
        que.push(root);
        bool isOrderLeft = true;
        while (!que.empty()) {
            int levelSize = que.size();
            list<int> levelList;
            for (int i = 0; i < levelSize; i++) {
                TreeNode* curNode = que.front();
                que.pop();
                // Z形
                if (isOrderLeft) {
                    levelList.push_back(curNode->val);
                } else {
                    levelList.push_front(curNode->val);
                }

                // 层序
                if (curNode->left) que.push(curNode->left);
                if (curNode->right) que.push(curNode->right);
            }
            vector<int> levelVec(levelList.begin(), levelList.end());
            ans.push_back(levelVec);
            // Z形: 方向一层一变换
            isOrderLeft = !isOrderLeft;
        }
        return ans;
    }
全部评论

相关推荐

点赞 评论 收藏
分享
爱看电影的杨桃allin春招:我感觉你在炫耀
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务