zoukankan      html  css  js  c++  java
  • leetcode 103二叉树的锯齿形层次遍历

    与102相比就增加了flag,用以确定要不要进行reverse操作

    reverse:STL公共函数,对于一个有序容器的元素reverse ( s.begin(),s.end() )可以使得容器s的元素顺序反转;

    C++代码:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    /**
    最直接的想法是利用层次遍历,然后reverse偶数层的数据
    
    **/
    class Solution {
    public:
        vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
            if(root==NULL) return {};
            vector<vector<int>> res;
            queue<TreeNode*> q;
            TreeNode* p;
            q.push(root);
            int flag=1;
            while(!q.empty()){
                int k=q.size();
                vector<int> level;
                for(int i=0;i<k;i++){
                    p=q.front();
                    q.pop();
                    level.push_back(p->val);
                    if(p->left) q.push(p->left);
                    if(p->right) q.push(p->right);
                }
                if(flag==0) reverse(level.begin(),level.end());
                flag=(flag+1)%2;
                res.push_back(level);
            }
            return res;
        }
    };

     相似:

    102 103 107

  • 相关阅读:
    写了一个Rijndael工具类
    使用bcel动态创建class
    有感于大理古城的天主教堂
    joj 1089 &&zoj 1060&&poj 1094 以及wa的分析和数据
    joj1026
    joj 1317
    joj 1171
    joj 2343
    joj 1078 hdu 1116
    joj 1189
  • 原文地址:https://www.cnblogs.com/joelwang/p/10332372.html
Copyright © 2011-2022 走看看