剑指 Offer 32 - III. 从上到下打印二叉树 III

2020-06-28

1.题目描述

请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左
的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

2.题解

1.偶数层时对vector逆序
2.偶数层时插在vector前面

3.代码

/**
 * 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>> levelOrder(TreeNode* root) {
    
    
        if (!root) return vector<vector<int>>(0);
        queue<TreeNode*> myque;
        myque.push(root);
        vector<vector<int>> res;
        int height=1;
        while (!myque.empty()){
    
    
            int cnt=myque.size();
            vector<int> vec;
            while (cnt--){
    
    
                TreeNode* tmp=myque.front();
                myque.pop();
                if (height&1){
    
    
                    vec.push_back(tmp->val);
                }else{
    
    
                    vec.insert(vec.begin(),tmp->val);
                }
                if (tmp->left) myque.push(tmp->left);
                if (tmp->right) myque.push(tmp->right);
            }
            height++;
            res.push_back(vec);
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_34600424/article/details/107004295