Z字形遍历二叉树

二叉树的之字形遍历 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 例如: 给定的二叉树是{3,9,20,15,7,#,#}, 该二叉树之字形层序遍历的结果是 3 20 9 15 7 输入格式 一行字符串,只包含大写字母和#。 此处采用完全二叉树的顺序存储结构。 输出格式 若干行,之字形输出树的结点,每一行输出树的一层。 输入样例 ABC###D## 输出样例 A C B D 基本思路: 1、通过观察题意,我们可以发现,这个题目构造二叉树的时候可以通过完全二叉树的顺序存储结构进 阅读详情

常见的二叉树遍历,有层次遍历、前序遍历、中序遍历、后序遍历。其中层次遍历中最常见的是正序层次遍历,但也会出现Z字形遍历的情况:如果从左向右输出第n行,则下一行从右向左输出。正序层次遍历是利用队列的先到先得性质,很明显Z字形遍历要用到栈得性质来实现。我们在输出时,可以借助行的奇、偶性,实现代码如下:

void print(Tree *root)
{
    if (root == NULL)
    return;
    int current = 0;
    int next = 1;
    stack<Tree *> stack_st[2];
    stack_st[0].push(root);
    while( !stack_st[0].empty() || !stack_st[1].empty())
    {
        Tree *temp = stack_st[current].top();
        stack_st[current].pop();
        cout<<temp->value;
        if(current == 0)
        {
            if(temp->left != NULL)
            stack_st[next].push(temp->left);
            if(temp->right != NULL)
            stack_st[next].push(temp->right);
        }
        else
        {
            if(temp->right != NULL)
            stack_st[next].push(temp->right);
            if(temp->left != NULL)
            stack_st[next].push(temp->left);
        }
        if (stack_st.empty())
        {
            cout<<endl;
            next = 1 - next;
            current = 1 - current;
        }
    }
}

 

二叉树的之字形层次遍历 1、两个栈实现二叉树的层次遍历 阅读详情

相关推荐

scau 18959 二叉树的之字形遍历

scau 18959 二叉树的之字形遍历

zqihm的博客 1099

二叉树Z字型遍历

二叉树遍历

qq_43597052的博客 1131

二叉树前序、中序、后序、层次遍历、Z字形遍历等方式《二叉树学习一》

一、遍历方式 方式 介绍 结果 前序遍历 前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树。 FBADCEGIH 中序遍历 中序遍历是先遍历左子树,然后访问根节点,然后遍历右子树。 ABCDEFGHI 后序遍历 后序遍历是先遍历左子树,然后遍历右子树,最后访问树的根节点。 ACEDBHIGF ...

胃病的不良少彦 795

(二叉树z字形层次遍历)LeetCode#103. Binary Tree Zigzag Level Order Traversal

按照z字形层次遍历二叉树

小仙女的博客 5101

关于影响力最大化问题中贪心算法的一些理解

在影响力最大化问题中(Influence Maximization,以下简称IM),贪心算法是最早提出的一种解决方法,并且一直沿用至今。它基于IM问题所具有的单调性(Monotonicity)和子模性(Submodularity)使用一种Hill Climbing策略,不断使用Monte Carlo模拟来寻找在当前情况下的具有最大传播范围的节点,添加至种子集合,得到最终结果,算法伪代码如下所示: 这里算法1其实并没有使用MonteCarlo模拟,而只是使用了贪心的策略...

nianjuan1990的专栏 2851

f103vet6 SD卡SDIO+DMA配置避坑指南:从初始化卡死到稳定读写的全流程解析

本文详细解析STM32F103VET6芯片SD卡SDIO与DMA配置中的常见问题,从初始化卡死到读写不稳定的全流程解决方案。重点分析总线宽度配置、时钟分频调整及DMA通道管理技巧,帮助开发者避开常见陷阱,实现稳定高效的数据存储。

u0v1w2x3的博客 666

[二叉树遍历]Z 字形遍历二叉树

题目描述 假设一个二叉树上各结点的权值互不相同。 我们就可以通过其后序遍历和中序遍历来确定唯一二叉树。 请你输出该二叉树的 Z 字形遍历序列----也就是说,从根结点开始,逐层遍历,第一层从右到左遍历,第二层从左到右遍历,第三层从右到左遍历,以此类推。 输入格式 第一行包含整数 N,表示二叉树结点数量。 第二行包含 N 个整数,表示二叉树的中序遍历序列。 第三行包含 N 个整数,表示二叉树的后序遍历序列。 输出格式 输出二叉树的 Z 字形遍历序列。 样例 样例输入 8 12 1..

weixin_57971183的博客 1465

大模型训练流程(四):PPO强化学习实战与调优指南

本文详细解析了大模型训练中PPO强化学习的实战应用与调优技巧,涵盖RLHF核心原理、PPO算法实现及显存优化策略。通过具体案例和代码示例,指导开发者有效提升模型回答质量与安全性,避免常见训练陷阱。

weixin_29051811的博客 436

PAT甲级 1127 Z 字形遍历二叉树

原题链接 假设一个二叉树上各结点的权值互不相同。 我们就可以通过其后序遍历和中序遍历来确定唯一二叉树。 请你输出该二叉树的 Z 字形遍历序列----也就是说,从根结点开始,逐层遍历,第一层从右到左遍历,第二层从左到右遍历,第三层从右到左遍历,以此类推。 例如,下图所示二叉树,其 Z 字形遍历序列应该为:1 11 5 8 17 12 20 15。 输入格式 第一行包含整数 N,表示二叉树结点数量。 第二行包含 N 个整数,表示二叉树的中序遍历序列。 第三行包含 N 个整数,表示二叉树.

赵小轩的博客 1886

高云FPGA开发实战:手把手教你用ModelSim做功能仿真与时序分析(附Testbench写法)

本文详细介绍了高云FPGA开发中如何使用ModelSim进行功能仿真与时序分析,包括环境搭建、Testbench编写、波形调试和时序优化等实战技巧。通过具体案例和代码示例,帮助开发者掌握FPGA仿真验证的核心方法,提升设计可靠性。特别针对高云GW5A系列器件提供了专业的仿真库配置指南和时序分析策略。

weixin_30412167的博客 464

【制作100个unity游戏之22】3DRPG游戏开发01——项目的设置和导入及渲染管线的安装修复

如果你现在存在一些疑惑unity导入素材为什么是粉紫色的?表示他没有适配我们的URP通用渲染管线,要如何适配呢?素材渲染错误丢失要如何解决?如果你有上面3个任意的问题,那这篇文章同样适合你,我将手把手教你如何安装修复渲染管线,看完你就了解了!在Unity中,他们都是渲染管线,它们的主要区别在于性能和功能。LWRP是早期版本的URP,它专门为移动设备和低端PC设计,旨在提供更高的性能。它使用基于顶点的光照和简化的后处理效果,可以在更低的硬件要求下运行。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2425

Z 字形遍历二叉树

假设一个二叉树上各结点的权值互不相同。我们就可以通过其后序遍历和中序遍历来确定唯一二叉树。请你输出该二叉树的 ZZ 字形遍历序列----也就是说,从根结点开始,逐层遍历,第一层从右到左遍历,第二层从左到右遍历,第三层从右到左遍历,以此类推。。

black_blank的博客 906

【Windows Server 2019】活动目录 (Active Directory) ——理论

博文介绍了活动目录 (Active Directory) 的定义,作用以及与 DNS 的关系。同时也介绍了AD的组织结构,包括域控制器,子域,对象,属性,容器,组织单位,域间信任等术语的解释,实验拓扑图。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 7746

二叉树的中序遍历,每层遍历,以及Z字形遍历

leetcode中,二叉树也是一块重点,对于树结构衍生出的问题,一般用递归的方法会比较多 二叉树的中序遍历 对于二叉树的前序遍历,就是左-根-右这种遍历顺序。 有递归和非递归写法:非递归就用栈来实现 res, stack = [], [] while True: while root: stack.append...

sinat_41613352的博客 891

自动权重化图卷积网络(Auto-Weighted GCN)算法在反洗钱识别中的应用及代码实现

该算法通过自动学习节点之间的权重信息,能够更好地捕捉AML数据中的关系和结构,从而提高反洗钱识别的准确性和效果。传统的AML识别方法通常依赖于专家定义的规则和手动提取的特征,但这些方法在应对大规模和复杂的数据时存在一定的局限性。GCN通过在图上执行卷积操作来捕捉节点之间的关系和结构信息,从而实现对图数据的学习和表示。自动权重化图卷积网络是一种基于GCN的改进算法,能够自动学习节点之间的权重信息,从而更好地捕捉图中的关系。利用自动计算的权重值执行图卷积操作。根据节点之间的相似度,计算每个节点的权重。

syntax_api860的博客 376

YOLO11改进|卷积篇|引入SPDConv

YOLO11中添加SPDConv卷积

A1983Z的博客 3696

【题解】【AcWing】1620. Z 字形遍历二叉树

1620. Z 字形遍历二叉树 原题传送:AcWing 1620. Z 字形遍历二叉树 假设一个二叉树上各结点的权值互不相同。 我们就可以通过其后序遍历和中序遍历来确定唯一二叉树。 请你输出该二叉树的 ZZZ 字形遍历序列----也就是说,从根结点开始,逐层遍历,第一层从右到左遍历,第二层从左到右遍历,第三层从右到左遍历,以此类推。 例如,下图所示二叉树,其 ZZZ 字形遍历序列应该为:1 11 5 8 17 12 20 15。 输入格式 第一行包含整数 NNN ,表示二叉树结点数量。 第二行包含 NNN

葑鈊丶 330

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[LeetCode 103 ]二叉树之字形(Z字型)遍历

题目:按照z字形层次遍历二叉树(以根节点所在层为第1层,则第二层的变量从右边节点开始直到最左边节点,第三层遍历则是从最左边开始到最右边) 思路:z字形层次遍历是对层次遍历加上了一个限制条件(即相邻层,从左到右的遍历顺序相反),因此还是可以采用队列来实现,只不过节点接入队列时需要考虑加入的顺序 code: public class Solution { public List<Li...

大树叶 技术专栏 6017

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

二叉树分层Z字形遍历

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33691700的博客 395

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

246-对二叉树进行层次遍历和Z字形输出

二叉树的层次遍历 二叉树的层次遍历:打印ABGCDHEF 我们使用队列来解决问题。 把A入队列,队列空不空,不空,A出栈,打印A,B,G入栈,队列不空,出B,入C,D,出G,G的左边为空,右边不为空,入H,出C,C的左右都为空,出D,E,F入栈,出H,H的左右都为空,E的左右为空,出E,F的左右为空,出F。 void NiceLevelOrder(BtNode *ptr) { if(ptr==nullptr) return; std::queue<BtNode*>qu; qu.push

LINZEYU666的博客 464

LeetCode高频题:二叉树的锯齿形(Z字形,之字形)层序遍历

1)普通的bfs二叉树层序遍历,非常简单,字节将队列不断从左往右加就行了 2)本题就是从1)改变来的,bfs队列控制,奇数层的时候,让加入队列的顺序从右往左,偶数层的时候,加入队列从左往右 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。.........

weixin_46838716的博客 1274

给定一个二叉树,返回其节点值的锯齿形层次遍历。Z 字形遍历 Java语言实现

import java.util.ArrayList; import java.util.LinkedList; /** * 按照z字形遍历二叉树 */ public class ZLevelOrder { /** * 按照Z字形访问遍历二叉树,就是在原来的层次遍历的基础上增加了一个标志位,来确定是正序还是反序加入 * @param root 二叉树 * @return 二叉树的遍历结果 */ public static LinkedList.

我的梦境传说 523

第五章 树 12 AcWing 1620. Z 字形遍历二叉树

第五章 树 12 AcWing 1620. Z 字形遍历二叉树

T_Y_F_的博客 294

【遍历二叉树】06二叉树曲折(Z字形)层次遍历II【Binary Tree Zigzag Level Order Traversal】...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 给定一个二叉树,返回他的Z字形层次遍历的节点的values。(提示,从左到右,然后下一层从右到左,然后再变化方向,就是这样一层一层的遍历) 例如: 给定一个二叉树{3,9,20,#,#,15,7}, ...

A201241302241的博客 217

【PAT甲级】1127 ZigZagging on a Tree(Z字形遍历二叉树)

此题是PAT甲级1020题的拓展,与1020唯一的不同就是输出的不再是层序遍历,而是Z字形遍历,依题意为右->左->右…的次序,在1020的基础上更改BFS函数,设置一个flag实现每隔一层翻转一次原本正常的层序遍历即可得到Z字形遍历。 1020题代码:https://blog.youkuaiyun.com/qq_50985046/article/details/123809863?spm=1001.2014.3001.5502 #include <bits/stdc++.h> using n

Ybibabo__的博客 1025

二叉树层序遍历(正向)和 Z 字形遍历

二叉树节点 struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(); TreeNode(int input) : val(input), left(nullptr), right(nullptr) {} }; 一、二叉树正向层序遍历 //二叉树层序遍历 void sequence(TreeNode *root) { TreeNode *cur; queue<TreeNode *> queue_1

weixin_46108108的博客 635
上一篇: C++语言实现堆排序
下一篇: 二叉树的子结构问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值