zoukankan      html  css  js  c++  java
  • 103. 二叉树的锯齿形层序遍历 力扣(中等) 可简单可难 bfs+reverse

    题目描述:

    给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

    例如:
    给定二叉树 [3,9,20,null,null,15,7],

    3
    /
    9 20
    /
    15 7
    返回锯齿形层序遍历如下:

    [
    [3],
    [20,9],
    [15,7]
    ]

    题源:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/

    代码:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     * };
     */
    class Solution {
    public:
        vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
       
         vector<vector<int>> ans;
         vector<int> subans;
         queue<TreeNode* > Q;
    
         if (root==NULL) return ans;
         Q.push(root);
         subans.push_back(root->val);
         ans.push_back(subans);
         int lnum=1;   //  主要记录每层有多少节点,达到一层层的结果
    
         while(!Q.empty())
         {
             subans.clear();
             for(int i=0;i<lnum;i++)
             {
                TreeNode* p=Q.front();
                Q.pop();
                if(p->left!=NULL)
                {
                    Q.push(p->left);
                    subans.push_back(p->left->val);
                }
                if(p->right!=NULL)
                {
                    Q.push(p->right);
                    subans.push_back(p->right->val);
                }
             }
            lnum=subans.size();
             if(lnum>0) ans.push_back(subans);
             
         }
         
         for(int i=0;i<ans.size();i++)
             if(i%2==1)  reverse(ans[i].begin(),ans[i].end());   // 如果层数从0开始计数,那么奇数层节点反一下
         
         return ans;
        }
    };
  • 相关阅读:
    登录保存用户信息
    GRIDVIEW单击事件
    GRIDVIEW单击双击事件
    gridview打印
    水晶报表
    CRYSTAL net样式
    Web Server 在IIS上部署ASP.NET Core项目
    MVC MVC+EF快速搭建
    MVC MVC常见错误及解决办法
    Open Interface Service WCF三种通信模式
  • 原文地址:https://www.cnblogs.com/stepping/p/15056378.html
Copyright © 2011-2022 走看看