树-按之字形顺序打印二叉树-JZ59

【Unity小游戏】整整一个周末写一款《皇室战争 玩法》 的 即时战斗类 游戏Demo。两万多字游戏制作过程+解析 Unity游戏制作,本篇文章介绍了复刻皇室战争玩法的一个自制小游戏,共有该游戏的两万字教程加制作过程,欢迎品尝! 世界上没有绝对的公平,如果我们起点就比别人第一步,那就更需要比别人努力了。 阅读详情

描述
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{1,2,3,#,#,4,5}
在这里插入图片描述
该二叉树之字形层序遍历的结果是
[
[1],
[3,2],
[4,5]
]

思路:
之字形输出,bfs层次遍历,可以用队列也可以用栈,
如果用队列,需要设定变量,基数层从左往右输出,偶数层从右往左输出(塞入result的时候翻转)
如果用栈,可以使用两个栈,这样的话就不用翻转了
在这里插入图片描述

代码:栈

import java.util.ArrayList;
import java.util.Stack;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer> > result = new ArrayList<>();
        if (pRoot == null) {
            return result;
        }
        //基数层从左往右输出,偶数层从右往左输出
        //基数层 从右往左存 栈 先入后出
        Stack<TreeNode> stack1 = new Stack<>();
        //偶数层 从左往右存 这样就可以先输出右边
        Stack<TreeNode> stack2 = new Stack<>();
        stack1.add(pRoot);
        while(!stack1.isEmpty() || !stack2.isEmpty()) {
            ArrayList<Integer> temp = new ArrayList<>();
            if (!stack1.isEmpty()) {
                while(!stack1.isEmpty()) {
                    TreeNode node = stack1.pop();
                    temp.add(node.val);
                    if (node.left != null) {
                        stack2.add(node.left);
                    }
                    if (node.right != null) {
                        stack2.add(node.right);
                    }
                }
                result.add(temp);
                continue;
            }
            if (!stack2.isEmpty()) {
                while(!stack2.isEmpty()) {
                    TreeNode node = stack2.pop();
                    temp.add(node.val);
                    //必须先塞右孩子节点
                    if (node.right != null) {
                        stack1.add(node.right);
                    }
                    if (node.left != null) {
                        stack1.add(node.left);
                    }
                }
                result.add(temp);
                continue;
            }
        }
        return result;
    }

}
华为OD机考双机位A卷 - 流浪地球(Java & Python& JS & C/C++ & GO ) 华为OD机考双机位A卷 - 流浪地球(OD上机考试双机位A卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。 阅读详情

相关推荐

Facebook登录协议逆向实战:从加密参数到完整流程解析(附Python代码)

本文深入解析Facebook登录协议的逆向工程,重点拆解`lgndim`和`encpass`等加密参数的生成逻辑,并提供完整的Python实现代码。通过Base64解码和RSA加密技术,帮助开发者理解并实现Facebook登录流程,同时涵盖工程优化与安全实践。

weixin_30687051的博客 476

JZ77:按之字形顺序打印二叉树

题目链接:JZ77 按之字形顺序打印二叉树 题目描述:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围:0 ≤\le≤ n ≤\le≤ 1500,树上每个节点的val满足∣val∣<=1500 要求:空间复杂度:O(n),时间复杂度:O(n) 题目分析:层次遍历+记录层数,利用双端队列层次遍历的基础上,记录层数layer,如果为奇数层,则从左到右打印,偶数层,则从右向左打印。时间复杂度为O(n),空间复杂度也为O(n) import java.u

可能是一只知更鸟 476

宇树机器人G1二次开发:导览、起始点、目的地与完整示例

通过宇树G1 SDK的导航接口,开发者可以高效地实现机器人的自主移动功能。连接 -> 设置目标点 -> 发送命令 -> 监控状态。本文提供的完整示例涵盖了从环境搭建到代码实现的全部步骤,并解释了起始点、目的地等关键概念。开发者可以在此基础上,结合多目标点巡逻、动态避障(需高级配置)等功能,构建更复杂的机器人应用。建议读者先在小范围、熟悉的平坦环境中测试,成功后再逐步扩展到更复杂的场景。

m0_52645558的博客 744

重建二叉树——【一天一道算法题】

解法就是递归的思想 分析: 根据中序遍历和前序遍历可以确定二叉树,具体过程为: 根据前序序列第一个结点确定根结点 根据根结点在中序序列中的位置分割出左右两个子序列 对左子树和右子树分别递归使用同样的方法继续分解 例如: 前序序列{1,2,4,7,3,5,6,8} = pre 中序序列{4,7,2,1,5,3,8,6} = in 根据当前前序序列的第一个结点确定根结点,为 1 找到 1...

深海微澜 315

实战指南(一)SCAPS-1D太阳能电池模拟软件从零到一:模型构建与参数解析

本文详细介绍了SCAPS-1D太阳能电池模拟软件的使用方法,从模型构建到参数解析,帮助用户快速掌握这一免费且功能强大的工具。特别适合用于单结/多结电池的电学性能分析,涵盖钙钛矿电池等常见结构的模拟实践,并提供参数调试和收敛性问题处理的实用技巧。

weixin_30588675的博客 445

避坑指南:ZYNQ PS端读写BRAM时容易忽略的5个配置细节(基于Vivado 2022.1)

本文基于Vivado 2022.1,总结了ZYNQ PS端读写单口BRAM时5个易被忽略的关键配置细节。内容涵盖关闭Safety Circuit以优化时序、精确匹配AXI控制器与BRAM的地址深度、注意PS端函数位宽与地址对齐、正确连接时钟复位域,并提供了实用的调试技巧与诊断代码,帮助工程师规避常见陷阱,确保数据交互稳定可靠。

net55的博客 373

西瓜仔刷题集5--剑指offer(51-60题)

剑指offer

qq_41083616的博客 287

Vue3 - 完美解决高德地图定位失败 Get ipLocation failed.Geolocation permission denied.(获取ipLocation失败。地理定位权限被拒绝。)

Get ipLocation failed.Geolocation permission denied.,vue3引入高德地图当前定位失败 ,vue3中使用高德地图定位报错,高德地图API用户定位失败,高德地图H5 定位失败报错排查和解决方案,微信公众号H5网页高德地图定位报错,谷歌浏览器-高德地图定位失败geolocation,getCurrentPosition 返回的 message报错,如何解决此问题,uniapp h5高德地图,微信、QQ等内置浏览器定位失败,高德地图实现实时用户位置定位,引入高德

🏆 前端领域优质创作者 4168

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

描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围: 0≤n≤1500,树上每个节点的val满足|val| <= 1500 要求:空间复杂度:O(n) ,时间复杂度:O(n) 例如: 给定的二叉树是{1,2,3,#,#,4,5} 该二叉树之字形层序遍历的结果是 [ [1], [3,2], [4,5] ] 示例1 输入: {1,2,3,#,#,4,5} 返回值: [[1],[3,2],[4,5]]...

hza163的博客 347

23种设计模式-享元(Flyweight)设计模式

软考中级-软件设计师 享元设计模式

片言可决讼,半纸能缚龙 3223

北斗导航 | 卫星信号捕获跟踪原理解析

卫星信号的捕获与跟踪是导航接收机的"眼睛",其性能直接决定定位精度、动态适应性和抗干扰能力。随着北斗三号全球组网完成,新一代接收机正朝着。两大核心阶段,二者共同构成定位的基础。调制,频谱主瓣宽度达4.092MHz,较传统BPSK调制抗干扰能力提升3dB[38]。的目标持续演进,在自动驾驶、精密农业等领域展现出巨大应用潜力。二维空间中搜索峰值相关能量[4]。卫星导航接收机对信号的处理可分为。北斗三号B1C/B2a信号采用。北斗三号新增的B1C信号采用。

尘世冰封的专栏 772

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

描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 例如: 给定的二叉树是{1,2,3,#,#,4,5} 该二叉树之字形层序遍历的结果是 [ [1], [3,2], [4,5] ] 示例1 输入: {1,2,3,#,#,4,5} 复制返回值: [[1],[3,2],[4,5]] import java.util.*; /* public class TreeNode { int val = 0; Tr

搓搓那年时光静好 467

EtherCAT报文-BRD(广播读)抓包分析

EtherCAT报文之BRD(广播读)报文Wireshark抓包分析。

kevin1499的博客 1212

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

题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 import java.util.ArrayList; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val =

了凡 483

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

剑指OfferJZ59:按之字形顺序打印二叉树-java版

剑指OfferJZ59:按之字形顺序打印二叉树JZ59:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 5 JZ59:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 之字形打印:即第一行(奇数行)从左往右打印,第二行(偶数行)从右往左打印,第三行从左往右打印。。。 打印时把每一层当成一个数组 dfs深度优先搜索

weixin_45992021的博客 1440

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JZ59-按之字形顺序打印二叉树

【题目描述】 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 示例 输入 输出 {8,6,10,5,7,9,11} [[8],[10,6],[5,7,9,11]] /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :

zhangmumu_的博客 152

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

剑指offer:JZ59 按之字形顺序打印二叉树

描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 例如:给定的二叉树是{1,2,3,#,#,4,5},该二叉树之字形层序遍历的结果是[[1],[3,2],[4,5]] #mermaid-svg-UMTOlpGWrOK9JKNf .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#merma

LC520730的博客 202

JZ59---按之字形顺序打印二叉树

题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路 准备两个堆栈,开始遍历二叉树 将两个堆栈分成奇、偶两层不同的操作 对于根节点特殊判断,从第一层(除开根节点)开始 奇数层:弹出一个该节点,提取该节点的子节点存放(从右到左)在偶数堆栈中。 偶数层:弹出一个该节点,提取该节点的子节点存放(从左到右)在奇数堆栈中。 直到奇数堆栈和偶数堆栈都无数据则,返回答案。 AC代码 import java

Eva_xiaoxi的博客 204

《剑指offer》JZ59按之字形顺序打印二叉树

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 解析:用两个栈,栈是先进后出,详细解析在代码中 代码: import java.util.ArrayList; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int va...

FamilyLin 286

剑指Offer JZ59 按之字形顺序打印二叉树 C++实现

题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 解题思路 方法一:层次遍历 1、思路:层次遍历二叉树,保存每一层的结点值,最后只需要反转偶数层的结点值就行了。 2、代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x)

weixin_41020287的博客 261

树11--按之字形顺序打印二叉树

树11--按之字形顺序打印二叉树-jz59题目概述解析&参考答案注意事项说明 题目概述 算法说明 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 测试用例 输入: {8,6,10,5,7,9,11} 输出: [[8],[10,6],[5,7,9,11]] 解析&参考答案 解析 使用链表存放一层节点,并使用一个row来记录奇偶行,偶行从左到右输出,奇行从右到做输出。 参考答案 vim jz

脚步不能达到的地方,眼光可以达到;眼光不能达到的地方,精神可以飞到 279

[2021校招必看之Java版《剑指offer》-59] 按之字形顺序打印二叉树

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

学哥斌的博客 159

JZ59 按之字形顺序打印二叉树 python

JZ59 按之字形顺序打印二叉树 my version 错误记录 自行添加特殊符号后,没有判断边界条件 from queue import Queue class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def Print(self, pRoot): if not pR

qq_42187809的博客 166

JZ59 --- 按之字顺序打印二叉树

题目描述: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 题解: 由题意知,需要按S形打印二叉树,实则为层序遍历只是奇数层正序打印,偶数层逆序打印。 (1)设置一个布尔型的变量flag,奇数层置为true,偶数层置为false。 (2)打印时判断flag,来决定如何打印。 public ArrayList<ArrayList<Integer> > Print(TreeNode pRoo

qq_43632625的博客 173

剑指Offer JZ59 按之字形顺序打印二叉树(JavaScript)

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M 热度指数:389700 本题知识点: 栈 树 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 示例1 输入 {8,6,10,5,7,9,11} 返回值 [[8],[10,6],[5,7,9,11]] 思路: 首先掌握层次遍历:剑指Offer JZ22 从上往下打印二叉树(JavaScript) 以此为基础进行变形

furfur-jiang的博客 262
上一篇: 树-对称的二叉树-JZ58
下一篇: 树-序列化二叉树-JZ61
whl_program
博客等级 码龄11年 101粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值