leetcode-103二叉树的锯齿形层序遍历「建议收藏」

leetcode-103二叉树的锯齿形层序遍历「建议收藏」给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层序遍历如下:[ [3], [20,9], [15,7]]/** * Definition for a binary tree node. * struct TreeNode { * int

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

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

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

[
  [3],
  [20,9],
  [15,7]
]
/** * 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:
    struct Node{ 
   
        int level;
        TreeNode *p;
        Node(int val,TreeNode *p):level(val),p(p){ 
   };
    };
    vector<vector<int>> zigzagLevelOrder(TreeNode* root) { 
   
        vector<vector<int>>res;
        if(root == NULL)return res;
        int cnt = 0;
        queue<Node>q;
        deque<Node>dq;
        q.push(Node(0,root));
        while(!q.empty()){ 
   
            while(!q.empty()){ 
   
                Node t = q.front();
                if(cnt == t.level){ 
   
                    vector<int>t;
                    res.push_back(t);
                    cnt ++;
                }
                res[res.size() - 1].push_back(t.p->val);
                q.pop();
                int level = t.level;
                if((level & 1) == 0){ 
   
                    if(t.p->left)dq.push_back(Node(level + 1,t.p->left));
                    if(t.p->right)dq.push_back(Node(level + 1,t.p->right));
                }
                else{ 
   
                    if(t.p->right)dq.push_back(Node(level + 1,t.p->right));
                    if(t.p->left)dq.push_back(Node(level + 1,t.p->left));
                }
            }
            while(!dq.empty()){ 
   
                q.push(dq.back());
                dq.pop_back();
            }
        }
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168702.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java string 转 object_java 类型转换 Object和String互转

    java string 转 object_java 类型转换 Object和String互转Long,Float等Object转为String方法1.toString()使用范围:任何继承Object的类都具有这个方法但是,使用toString()的对象不能为null,否则会抛出异常java.lang.NullPointerException/**返回:该对象的字符串表示*/Integerx=newInteger(100);if(x!=null)System.out.printl…

    2022年6月1日
    98
  • Werkzeug Turorial「建议收藏」

    Werkzeug Turorial「建议收藏」Werkzeug不是一个framework,而是一个library,用来开发application和framework一个WSGI的application像这样:defapplication(environ,start_response):start_response(‘200OK’,[(‘Content-Type’,’text/plain’)])return[‘HelloWorld!’]一个WSGIapplication是一个可以调用的,有environ(dic

    2022年9月28日
    4
  • 舵机控制原理详解「建议收藏」

    舵机控制原理详解「建议收藏」控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部

    2022年6月15日
    37
  • 有监督学习VS无监督学习「建议收藏」

    有监督学习VS无监督学习「建议收藏」事先先说明一下:标签就是指的分好的类别,指明标签就是告诉计算机,这个样本属于哪一类。对于聚类的话,是事先类别都没定义好,但是类别的个数一定要告诉计算机这个问题可以回答得很简单:是否有监督(supervised),就看输入数据是否有标签(label)。输入数据有标签,则为有监督学习,没标签则为无监督学习。首先看什么是学习(learning)?一个成语就可概括:举一反三。此处以高考为例,高考的题目在上

    2022年5月25日
    49
  • 数据分析——多重共线性检验

    数据分析——多重共线性检验在做线性回归的时候,一般分为以下几个步骤:1、画散点图,简单的查看是否存在线性关系(3D以下)2、线性模型跑一遍试试效果3、其中需要查看以下几个指标:3.1正太分布检验3.1多重共线性3.2变量显著性3.4拟合效果4、解释变量上面一篇文章了解了如何利用t检验进行变量的显著性检验,下面着重学习如何进行多重共线性的检验一、辅助…

    2022年5月18日
    44
  • Web前端学习 | Ajax

    Web前端学习 | Ajaxajax其实是代替手工输入url向server申请资源的一个工具。XMLHttpRequest对象的onload回调函数是在异步请求加载完成后所执行的函数,当JavaScript监测到请求的数据全部传输完成后就会触发该函数。而open()函数设置异步请求的method、URL和同步方式等参数,执行open()后再执行send()函数才开始向服务器发送请求。<!DO…

    2025年9月4日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号