【笔记】二叉树遍历

ArcGIS标注(二分式、三分式、条件分类标注、上下标、牵引线、文字格式化…) ArcGIS中的各种标注方法、可能遇到的问题和细节。 阅读详情

二叉树的先序遍历,中序遍历,后序遍历分别对应着

先:根左右 || 中:左根右 || 后:左右根 的递归输出方式

先序中序后序非常形象的说明的是根和左,右的相对位置关系

我们可以用结构体储存一颗二叉树

如下:

struct node {
	int left, right, num;
	//left用于存左儿子的地址
	//right用于存右儿子的地址
	//num存当前地址p[root]对应的值 
};
node p[110];

建好一颗树后,如何查询输出其实也很简单

如先序遍历:

void dfs1 (int root)
{
	if (root == 0)
	return ;
	cout << p[root].num << " "; 
	dfs1 (p[root].left);
	dfs1 (p[root].right);
}

中序遍历:

void dfs2 (int root)
{
	if (root == 0)
	return ;
	dfs2 (p[root].left);
	cout << p[root].num << " ";
	dfs2 (p[root].right);
}

后序遍历:

void dfs3 (int root)
{
	if (root == 0)
	return ;
	dfs3 (p[root].left);
	dfs3 (p[root].right);
	cout << p[root].num << " ";
}

可以看出输出程序的位置与左右儿子递归函数调用的相对位置和遍历顺序中根与左右的顺序一致

那么来一道例题

题目链接

题目描述:

已知一棵二叉树,分别求它的先序编历,中序编历、后序编历(结点数N<=100)

 

输入格式:

第一行树结点个数,从第二行开始,每行三个数,第一个数是结点,第二个数是左孩子,第三个数是右孩子,0表示不存在左孩子或者右孩子

 

输出格式:

第一行先序编历,第二行中序编历,第三行后序编历,数与数之间有一个空格

 

样例输入:
5
1 2 3
2 4 5
3 0 0
4 0 0
5 0 0

 

样例输出:
1 2 4 5 3
4 2 5 1 3
4 5 2 3 1

是一道非常裸的模板题

就直接上AC代码了:

#include <iostream>
using namespace std;

struct node {
	int left, right, num;
	//left用于存左儿子的地址
	//right用于存右儿子的地址
	//num存当前地址p[root]对应的值 
};
node p[110];

int n;

void dfs1 (int root)
{
	if (root == 0)
	return ;
	cout << p[root].num << " "; 
	dfs1 (p[root].left);
	dfs1 (p[root].right);
}

void dfs2 (int root)
{
	if (root == 0)
	return ;
	dfs2 (p[root].left);
	cout << p[root].num << " ";
	dfs2 (p[root].right);
}

void dfs3 (int root)
{
	if (root == 0)
	return ;
	dfs3 (p[root].left);
	dfs3 (p[root].right);
	cout << p[root].num << " ";
}

int main ()
{
	cin >> n;
	for (int i = 1; i <= n; ++i)
	{
		p[i].num = i;
		int a, b, c;
		cin >> a >> b >> c;
		p[a].left = b;
		p[a].right = c;
	}
	dfs1 (1);
	cout << endl;
	dfs2 (1);
	cout << endl;
	dfs3 (1);
}

PID控制算法实践应用(一):PID算法的离散化 由于计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。因此,连续PID控制算法不能直接使用,需要采用离散化方法。 阅读详情

相关推荐

Camera tuning flow相机调试流程

相机调试流程分为三大模块:ProcessRaw处理原始数据(黑电平校正、阴影校正),3A实现自动控制(曝光/对焦/白平衡),ISP进行图像精加工(伽马校正、锐化降噪、色彩处理)。三个阶段环环相扣,前阶段为后阶段提供基础,最终输出画质优良且风格化的图像。

weixin_64706696的博客 1230

【原创】二叉树的建立与遍历(前序遍历、中序遍历、后序遍历)

二叉树的建立与遍历(binary-tree) 题目描述 给出一棵二叉树,分别输出先序、中序、后序遍历结果。 输入 第一行:结点数n(1 以下n行,每行3个整数,分别表示父结点、左孩子、右孩子。若没有孩子,对应的整数为0. 输出 第1行:树根 第2行:先序遍历结果,数字间用1个空格分开。 第3行:中序遍历结果,数字间用1个空格分开。 第4行:后序遍历结果,数字间用1个

致上 5171

深入理解光流法外推雷达回波

背景介绍 鉴于本人实在太过疲惫和劳累,一些简单的便于理解的废话就不在记录,耗费两天时间研究了一下光流法,本帖用于记录学习过程中源码的难点细节。 使用光流预测的核心有两个利用多张连续回波图像(变分)或者相邻两张回波图(交叉相关,LK等)计算出光流场(速度矢量场),之后利用半拉格朗日方法进行外推。 半拉格朗日方法 三时间步半拉格朗日方法,其核心公式如下 但这个有点难理解,但看一维的图就很好理解 它的核心就是迭代求Am(位移矢量),如果理解困难的话,其实质上就是通过未来迭代(猜)出当前时刻的Am找到过去的假设

weixin_44695861的博客 6035

【数据结构】前序遍历,中序遍历,后序遍历(二叉树)

前序序列:ABDEFCGH先访问根结点A,打印A,然后访问左子树,此时左子树B又作为根节点,打印B再访问B的左子树D,打印D,再访问B的右子树E,打印E,此时E又是根结点再访问E的左子树F,此时A的左子树已访问完毕。然后继续访问A的右子树,方法相同(根左右)。中序遍历先访问A结点的左子树B,B结点有左子树D,所以先访问D结点,打印D结点,根据(左根右)思想访问根结点B,打印B,再访问E结点,E结点有左子树F,所以先访问F,访问完F结点后再访问E结点,打印E结点,访问E结点后,则A结点。

m0_67930426的博客 5075

STM32F103用软件I2C读取IP2366电量数据,实测避坑指南(附完整源码)

本文详细介绍了如何使用STM32F103的软件I2C驱动读取IP2366电池管理芯片的电量数据,包括GPIO初始化、I2C时序实现、关键延时优化及常见问题解决方案。通过实测避坑指南和完整源码,帮助开发者快速实现稳定的电量数据读取,适用于嵌入式电池管理系统开发。

weixin_33725722的博客 515

海外最新AI营销AI销售书籍推荐AI营销培训讲师AI销售培训讲师人工智能营销培训师人工智能销售培训师AI赋能营销培训AI赋能销售培训企业AI营销内训企业AI销售内训AI营销课程讲师AI销售课程讲师

专栏|AI营销与AI销售实战 · 第46期在这个人类与算法共舞的时代,销售,已经不是你我熟悉的那个“打电话、见客户、做PPT”的老行当了。你还以为销售是“打感情牌”?错了,情感要继续,但方式已经升级。你还以为AI只是“写写文案”?错了,文案只是皮毛,真正的杀器,是思维方式的重构,是认知地图的重绘。首先,我们需要明确一个事实:AI并不会消灭销售这个职业,但它必然会重新定义销售的本质。在销售领域,真正的制胜之道不是简单地采用AI工具,而是的能力。

Akibfrycc的博客 1101

二叉树的遍历问题

题目:二叉树遍历 问题描述 给定一棵二叉树的先序遍历和中序遍历序列,求其后序遍历序列。 输入格式 输入数据有两行,为两个字符串,其长度n均小于等于26。第一行为先序遍历序列,第二行为中序遍历序列。 二叉树中的结点名称以大写字母表示:A,B,C…最多26个结点。 输出格式 在一行上输出后序遍历序列。 样例输入1 ABC BAC 样例输出1 BCA 样例输入2 ABDFGHIEC FDHGIBEAC 样例输出2 FHIGDEBCA 主要思路 这种用先序和中序序列作为建树依据来求其后续

西电卢本伟的博客 1329

视觉检测在激光打码字符检测上的检测案例

在机器视觉检测技术中,OCR识别是比较典型的应用,应用的场景也比较丰富,基本上在制造业,每个工厂或者印刷厂都会用到视觉OCR识别检测,OCR字符识别的原理很简单,通过图像分割后,对字符进行学习、命名。在工业相机拍摄图像后,软件进行处理,从而读取结果。 随着技术的发展,激光打标技术被更多的应用在生产过程中,由激光打标代替油墨进行字符印刷,速度更快、效果更好。 但是随之而来的是在视觉检测上带来的影响,目前市面上应用的字符检测设备大多是由集成商单独开发的软件,在检测油墨印刷时,图像上的字符没有断点,非常连贯,所需

视觉检测设备-视觉检测系统-单张检测设备-卷料印品检测 1463

已知一棵二叉树的前序遍历以及中序遍历顺序,求这棵树的后序遍历

已知前序遍历序列和中序遍历序列,可以唯一确定一棵二叉树;已知后序遍历序列和中序遍历序列,可以唯一确定一棵二叉树;注意已知前序和后序遍历,是不能确定一棵二叉树的。httpshttpshttps。...

sally的jerry 8096

AUTOSAR进阶图解==>AUTOSAR_SWS_CANStateManager

AUTOSAR CAN状态管理器(CanSM)摘要 CanSM是AUTOSAR通信栈中的关键模块,负责管理CAN网络状态和模式转换。主要功能包括: 控制CAN控制器/收发器工作模式(STARTED/STOPPED,NORMAL/STANDBY) 处理三种网络状态(全通信、静默通信、无通信)之间的转换 监控和处理总线关闭(Bus-Off)事件 与ComM、CanIf、BswM等模块协同工作 CanSM通过状态机管理网络状态转换,支持可配置的总线关闭恢复策略。它为每个CAN网络维护独立的状态机,实现网络状态的精

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 5580

Android Framework AMS面试题及参考答案

比如,应用 B 的 Activity 如果是 “singleTask” 启动模式,AMS 会查找应用 B 是否有包含该 Activity 的任务栈,若有则将这个任务栈切换到前台,并且清除该 Activity 之上的其他 Activity,实现流畅的跨应用跳转体验。如果一个 Activity 的启动依赖于另一个 Activity 的结果,AMS 会暂停当前 Activity 的部分生命周期操作,等待依赖的 Activity 完成相关操作后,再继续当前 Activity 的生命周期进程。

大模型大数据攻城狮的专栏 1862

二叉树的先序、中序、后序以及层次遍历

要进行层次遍历,需要建立一个循环队列。先将二叉树头结点入队列,再将头结点的左、右节点入队列,此时头节点就可以出队列遍历,然后重复上面的操作直到队头和队尾为空,这就是层次遍历。例如:一棵二叉树的中序是:BDCAEHGKF 后序是:DCBHKGFEA。当经过一次,被写出来的点,我们称它为先序遍历。当经过两次,被写出来的点,我们称它为中序遍历。当经过三次,被写出来的点,我们称它为后序遍历。

qq_50931436的博客 9万+

ECU诊断功能测试:从理论到实践

ECU诊断功能是指通过特定的诊断协议与ECU进行通信,以获取ECU的状态信息、故障码、数据流等,并执行特定的诊断操作。诊断功能的主要目的是帮助开发人员和维修人员快速定位和解决ECU中的问题,确保车辆的安全性和可靠性。UDS协议是ISO 14229标准的一部分,定义了一系列的诊断服务,如读取故障码、清除故障码、读取数据流等。UDS协议基于CAN(Controller Area Network)总线,具有较高的灵活性和扩展性。读取故障码是诊断功能中最基本的操作之一。通过读取故障码,可以快速定位ECU中的问题。

闲人编程的博客 1807

漫画算法笔记 二叉树遍历

漫画算法笔记 二叉树遍历 #include <iostream> #include <stdlib.h> #include <list> #include <vector> #include <stack> #include <queue> using namespace std; template<typename T> struct TreeNode { T _data; TreeNode<T> *_l

qq_36333986的博客 258

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

二叉树的遍历笔记

定义们:前、中、后序三种遍历就是根结点是先于左右子树遍历还是后于左右子树遍历的问题。前:根-左子树(根-左子树(根-左子树……-右子树)-右子树)-右子树中:左子树(左子树(……)-根-右子树(……))-根-右子树后:左子树(左子树(……)-右子树-根)-右子树-根前序是:ABD(查看了小a是否为NULL,因为D是当前子树的根结点,之后应该遍历左子树了,左子树为NULL以后查看右子树小b也为NUL...

isia's new world 202

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

笔记——二叉树遍历

题目 输入一棵二叉树,输出树的前、中、后序遍历结果。 输入一个整数N(N&lt;= 10000),表示树中有N个结点(编号0~N-1)。 接下来N行,依次为结点0~结点N-1的左右孩子情况。 每行3个整数,F,L,R。L,R为F的左右孩子。L,R如果为-1表示该位置上没有孩子。 分三行分别输出树的前中后序遍历。 同一行中的数字,用一个空格间隔。 输入样例 5 0 3 1 1 2...

皮蛋瘦肉没有肉 386

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【笔记】二叉树(递归、栈)遍历、中序线索建立和遍历

二叉树(递归)遍历 二叉树(栈)遍历 建立中序线索、遍历中序线索 (补丁) 释放内存 《王道2022考研数据结构复习指导》P136左右 打印 2021年06月19日18:02:03 --15 --14 --13 --12 --11 --10 --9 --8 --7 --6 --5 --4 --3 --2 --1 ------------------------------------ --1 --2 --3.

LawssssCat的博客 481

【算法笔记】二叉树之基础遍历

基础知识 一. 二叉树的种类 二叉树主要分为满二叉树、完全二叉树 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。深度为k的满二叉树,有2k-1个节点。 完全二叉树:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h -1 个节点。 二叉搜索树 树上加上数值就是二叉搜索树,二叉搜索树是一个有序树。 若它的左子

computs的博客 1225

九度笔记之 二叉树遍历

题目描述: 二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。 给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。 输入:

KingEasternSun的专栏 1685

二叉树的四种遍历方法笔记

二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。 二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。 前序 中 左 右 中序 ...

那些年的代码 253

【算法笔记】二叉树的Morris遍历

  Morris遍历: 二叉树之前的遍历方式有空间浪费的问题(递归实现也会占中栈空间)。Morris遍历时间复杂度O(N),额外空间复杂度O(1),通过利用原树中大量空闲指针的方式,达到节省空间的目的根据Morris遍历的过程,写出的代码模板1)如果cur没有左孩子,cur向右移动(cur = cur.right)2)如果cur有左孩子,找到左子树上最右的节点mostRight:2.1)如果mostRight的右指针指向空,让其指向cur,然后cur向左移动(cur = cur.left)2.2)如果mos

u012559967的专栏 1007

【算法笔记】二叉树的遍历

二叉树的前序遍历 二叉树的中序遍历 二叉树的后序遍历

weiwai的博客 183

二叉树遍历笔记

预设 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ 前序遍历 class Solution { public: vector<int> T; sta

ph の BLOG 210

数据结构学习笔记——由遍历恢复二叉树以及非递归遍历二叉树

例如,已知先序序列为ABDECFG,中序序列为DBEAFCG,由先序遍历和中序遍历恢复二叉树。 从先序序列确定二叉树的根结点:A,如下: 通过中序遍历来确定左、右子树,其中结点A之前的所有结点都是根结点左子树结点,其后都是根结点右子树结点,如下: 然后继续对先序序列和中序序列中的左、右子树进行相应进一步的分解: 可得到如下二叉树: 通过代码验证如下,正确: 例如,已知中序序列为DBEAFCG,后序序列为DEBFGCA,由先序遍历和中序遍历恢复二叉树。 从中序序列的最后一个结点确定二叉树的根结点:A,

小宇y的博客 2308

6_7二叉树的层序遍历uva122(刷题笔记)

但如果一旦执行,就再也无法找到先前的那些内存了,使用不到,但是那些内存依然存在,这就称为—内存泄露,意味着有一些内存被白白浪费了。分析题意,需要采用动态结构,根据需要建立新的节点,首先识别输入数据(节点值、路径方向),再将其建立成树,然后使用队列实现层序遍历。若字符串1<字符串2,则函数返回一个负数。以输入(11,LL)为例,则&s[1]即为11,LL),sscanf将读入的字符串解析为%d,并存入v中。输入输出函数,作用是从一个字符串中提取字符串、浮点数、整数等值,并将其保存到指定的变量中。

abc1152028936的博客 411

学习笔记—二叉树的非递归遍历

二叉树的定义如下: struct TreeNode{ int val; struct TreeNode* left; struct TreeNode* right; TreeNode(int x): val(x),left(NULL),right(NULL){ } }; 一、递归实现二叉树:(递归函数实际就是递归栈,所以后面非递归要借...

Pichairen 513
上一篇: 【XJOI】题解 邓哲也的矩阵-贪心
下一篇: 【XJOI】题解 表达式求值-逆波兰算法+字符串处理
El_Apocalipsis
博客等级 码龄9年 5粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值