之字形打印二叉树(三十三)

之字形打印二叉树 思路: 首先我们需要逐层打印二叉树,然后根据每一层的状态判定是从左到右,还是从右到左。 首先问题的核心其实是从上到下,从左到右打印二叉树,只不过后面题目多了两个要求,所以我们2代码的大体框架应该是基于从上到下打印二叉树; 其次逐层打印二叉树,实际上就是让我们对每一层设置标志位,然后根据标志位去决定打印的情况; 最后之字形,其实还是根据标志位去决定正序,还是逆序打印; 分析,完毕,参考代码如下: /*struct TreeNode { int val; struct TreeNode *left; 阅读详情

题目

请实现一个函数按照之字形顺序从上向下打印二叉树。

即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

样例
在这里插入图片描述
算法
相比于上一题,这道题仅需要增加一个标志位,我这里采用是一个整数,如果是奇数则正序打印,偶数翻转。

时间复杂度 O(n)

class Solution {
    public List<List<Integer>> printFromTopToBottom(TreeNode root) {
        List<List<Integer>> res = new ArrayList();
        Queue<TreeNode> q = new LinkedList();
        if(root == null) return res;
        q.offer(root);
        int count = 0;
        while(q.size() != 0){
            List<Integer> list = new ArrayList();
            for(int i = 0,n = q.size();i < n;i++){
                TreeNode tmp = q.peek();
                q.poll();
                list.add(tmp.val);
                if(tmp.left != null){
                    q.offer(tmp.left);
                }
                if(tmp.right != null){
                    q.offer(tmp.right);
                }
            }
            count++;
            if(count % 2 == 1)
                res.add(list);
            else{
                Collections.reverse(list);
                res.add(list);
            }
               
        }
        
       return res;
    }
}
西门子TM PosInput1模块SSI编码器配置与速度测量实战 本文详细介绍了西门子TM PosInput1模块配置SSI绝对值编码器的实战步骤,涵盖硬件组态、工艺对象配置、编程实现与速度测量优化。重点解析了高分辨率编码器的数值处理技巧和常见调试问题,帮助工程师快速实现高精度位置与速度检测,提升自动化项目效率。 阅读详情

相关推荐

ROS2中间件选型指南:FastDDS与CycloneDDS零拷贝机制对比与实战

在机器人开发中,通信中间件是连接分布式节点的核心纽带,其性能直接影响系统的实时性与可靠性。DDS作为ROS2默认的通信标准,通过发布订阅模型和QoS策略,为高频大带宽场景提供了灵活的数据分发能力。并行计算与高性能传输的需求,推动了零拷贝技术的演进——从传统序列化到共享内存乃至指针传递,旨在减少数据复制开销、降低延迟。在激光雷达点云、相机图像等场景下,中间件的选型尤为关键。FastDDS凭借与ROS2的深度集成和丰富文档成为入门首选,而CycloneDDS在低延迟和资源占用上表现更优,借助iceoryx实现了

weixin_28726391的博客 259

传说中的之字形

  int main() { int n; cin&gt;&gt;n; int pos1=0; int pos2=0; int i=2; for(;i*(i-1)/2&lt;n;i++); if(i%2==0) { pos2=n-(i-2)*(i-1)/2; pos1=i-pos2; } else { pos1=n-(i...

qq_33870933的博客 550

Unity实时控制佳能单反拍照全流程(附EDSDK 3.6.1配置避坑指南)

本文详细介绍了在Unity中实时控制佳能单反相机进行拍照的完整流程,重点提供了EDSDK 3.6.1的配置与避坑指南。内容涵盖从SDK获取、环境搭建、相机初始化、参数设置到实现拍照控制,并深入探讨了实时取景的延迟优化方案与资源管理,旨在帮助开发者高效集成专业相机,提升AR/VR及摄影测量等应用的视觉输入质量。

go5gopher的博客 184

“之”字形打印矩阵

【题目】 给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 “之”字形打印的结果为:1,2,5,9,6,3,4,7,10,11,8,12 【解题思路】 采用两个函数,一个用于遍历斜行,得到斜行左下角坐标和右上角坐标,另一个函数用于打印两个坐标之间的所有点。 第一个函数实现的难点在于当左下角坐标向下到底时纵坐标就不再改变,横坐标...

BodyCoding 278

【Docker】Docker安装Hadoop分布式集群

hadoop目录安装在:/usr/local/hadoop-2.7.0/etc/hadoop。访问Hadoop102:9870,查看是否能够看到hdfs界面。访问hadoop103:8088,查看能够看到yarn界面。在yarn上可以看到执行情况。

weixin_46429290的博客 3461

Python新手必看:5分钟搞定睿尔曼机械臂基础控制(附代码示例)

本文为Python新手提供了快速上手睿尔曼机械臂基础控制的实战指南。通过详细的步骤讲解和代码示例,介绍了从环境搭建、网络配置、SDK安装到建立连接、执行关节运动(movej)、直线运动(movel)等核心控制指令的全过程,帮助零基础开发者快速实现机械臂的基础操控。

hp777的博客 329

之字形二叉树

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 /* struct TreeNode {     int val;     struct TreeNode *left;     struct TreeNode *right;     TreeNode(int x) :      

iSummer的专栏 526

SAP生产订单技术性完成(TECO)操作指南与实战应用

生产订单技术关闭操作指南主要包括单笔和批量关闭两种方式,通过CO02/COHV事务码完成。

m0_47402127的博客 1932

请实现一个函数按照之字形打印二叉树

class Solution:     def Print(self, pRoot):         # write code here         if not pRoot:    &nbsp...

weixin_43994113的博客 395

Stable Diffusion WebUI 安装前准备

大家好,我是水滴~~在安装 stable-diffusion-webui 前需要做一些准备工作,本篇文章主要介绍需要的电脑配置、魔法、安装 Python、安装 Git 等。

水滴的博客 2100

使用R语言实战:构建Logistic回归模型

Logistic回归是一种基于概率的分类算法,它用于预测离散的结果变量(也称为响应变量或因变量)。与线性回归不同,Logistic回归的输出是一个概率值,通常在0和1之间。这使得它非常适合处理二分类问题。市场营销:预测客户是否会购买某个产品。医学研究:预测疾病的发生与否。信用风险评估:预测个人申请贷款的违约风险。社会科学:预测个人对某个政策的态度。

2301_79331230的博客 1140

LeetCode题目:之字形打印二叉树

题目描述: 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果: [ [3], [20,9], [15,7] ] 提示: 节点总数 <= 1000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-c

weixin_39224015的博客 1923

【全局路径规划模块运动学算法】无人机Kinodynamic A*算法、Kinodynamic RRT*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Kinodynamic A*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容啃这个Kinodynamic A_star算法,建议先啃一啃高飞fast_planner那篇论文,把理论打好,如果还是比较迷,就先看Dijksta、再看A_star、再看hybrid A_star 三个的流程,因为往上资料比较多,再看这个Kinodynamic A_star算法,流程已经很相像了。如果。

qq_35635374的博客 2603

按之字形顺序打印二叉树

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 以题目中的二叉树为例,一步步分析。 当二叉树的根结点(结点1)打印之后,它的左子结点(结点2)和右子结点(结点3)先后保存到一个容器中。值得注意的是,在打印第二层的结点时,先打印结点3,后打印结点2。由此可见结点在这个容器中是后进先出的,因此该容

Bryan要加油 3909

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

二叉树的从上往下打印、以及二叉树的之字形打印

前言 按照从上往下的顺序、之字形的顺序将数据存储到ArrayList import com.datastructure.utils.GenerateBinaryTree; import com.datastructure.utils.Node; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; public class 从上往下打印二叉树 {

Dennen的博客 274

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

按之字形顺序打印二叉树——js

按之字形顺序打印二叉树 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路 当二叉树的根结点(结点1)打印之后,它的左子结点(结点2)和右子结点(结点3)先后保存到一个容器中。值得注意的是,在打印第二层的结点时,先打印结点3,后打印结点2。由此可见结点在这个容器中是后进先出的,因此该容器可以用...

qq_40608516的博客 630

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

对二叉树实现之字形打印

题目描述: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,其他行以此类推。 队列实现 使用队列实现二叉树的之字形打印,跟层序打印二叉树其实是一样的思路,只不过需要设置一个标记位,因为奇数行实现的是从左到右的打印顺序,而偶数行是从右到左的打印顺序,所以要根据标志位实现每层的一个反转。 二叉树的结构体代码 struct TreeNode { int val; struct TreeNode *left; struct TreeNode

xiaofeng 370

按之字形顺序打印二叉树 java

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; /* public class Tre...

有梦的博客 385

剑指Offer——按之字形顺序打印二叉树

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。方法一方法和从上往下打印二叉树类似,遍历顺序是从上到下,每一行按照从左到右的顺序进行遍历,但是需要增加一个参数row来标记当前行数,如果是偶数行,则每次将值放入vector的末尾;如果是奇数行,则每次将值插入vector的第一个位置。代码/* st...

星空的博客 1047

[剑指Offer]按之字形顺序打印二叉树(Java)

题目 按之字形顺序打印二叉树 -- newcoder 剑指Offer 59 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推 思路 思路1: 1、多行遍历二叉树思想,同时维护行遍历正序/倒序标识位 2、每次行遍历时,是正序则加入行遍历列表最后位置,否则加入列表头部 思路...

聚沙成塔 699
上一篇: 分行从上往下打印二叉树(三十二)
下一篇: 设计模式之抽象工厂模式
software_Manito
博客等级 码龄8年 6粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值