关于二叉树的遍历

二叉树的遍历(七种方法) 本章主要通过运用递归与非递归方法分别对二叉树进行遍历 主要分先序遍历、中序遍历、后序遍历以及层次遍历四种情况进行讨论 阅读详情
作者:曹忠明,华清远见嵌入式学院讲师。

  二叉树遍历就是沿某条搜索路径周游二叉树,对树中的每一个节点访问一次且仅访问一次。由于二叉树的递归性质,遍历算法也是递归的。

  二叉树的遍历有先序遍历、中序遍历和后序遍历。下面以(图一)中二叉树介绍一下这三种遍历。


  (图一) 二叉树

  1、先序遍历

  先序遍历的遍历规则是(中 前 后),中就是父节点,前就是左孩子,后是右孩子。既先访问当前节点,再访问左子树,最后访问右子树。这个过程是由根节点开始的一个递归的过程。以上面这个二叉树为例。他的遍历过程为:

  (1)ABC

  (2)A(BD)(CE)

  (3)A(B(DF))(C(EGH))

  算法实现为:

  PREORDER ( bitree *r)

  {

  if ( r = = NULL )

  return ;                                      /*空树返回*/

  printf ( " %c ",r->data );                     /*先访问当前节点*/

  PREORDER ( r->lchild );                    /*再访问该节点的左子树*/

  PREORDER ( r->rchild );                   /*最后访问该节点右子树*/

  }

  2、中序遍历

  中序遍历的遍历规则是(前 中 后),既访先问左子树,再访问当前节点,最后访问右子树。他的遍历过程为:

  (1)BAC

  (2)(DB)A(CE)

  (3)((DF)B)A(C(GEH)

  算法实现为:

  INORDER ( bitree *r)

  {

  if ( r = = NULL )

  return ;                                       /*空树返回*/

  INORDER ( r->lchild );                      /*先访问该节点的左子树*/

  printf ( " %c ",r->data );                     /*再访问当前节点*/

  INORDER ( r->rchild );                     /*最后访问该节点右子树*/

  }

  3、后序遍历

  中序遍历的遍历规则是(前 后 中),既先访问当前节点的左子树,在访问当前节点的右子树,最后访问当前节点。他的遍历过程为:

  (1)BCA

  (2)(DB)(EC)A

  (3)((FD)B)((GHE)C)A

  算法实现为:

  POSTORDER ( bitree *r)

  {

  if ( r = = NULL )

  return ;                                       /*空树返回*/

  POSTORDER ( r->lchild );                 /*先访问该节点的左子树*/

  POSTORDER ( r->rchild );                /*再访问该节点右子树*/

  printf ( " %c ",r->data );                     /*最后访问当前节点*/

  }

  由上面一个例子可以看出,这是一个递归的过程,由根节点开始,递归的对各自的孩子结点按规则遍历。

  “本文由华清远见http://www.embedu.org/index.htm提供”


SMOKE 3D:从 Python 到 C++ 实现车辆与行人单目 3D 视觉识别在 RK3588 上的深度部署 SMOKE的网络结构通常基于高性能的骨干网络(如DLA-34,您使用的模型就是基于此),通过编码器-解码器架构来提取特征。输入:RGB图像(本项目为骨干网络:用于特征提取。检测头热力图分支:预测关键点热力图。通常在热力图上进行NMS来找到局部最大值,即潜在的关键点位置。回归分支:对于每个关键点位置,预测上述的8维3D属性向量。分类分支:预测每个关键点对应的物体类别。置信度分支:预测每个关键点的置信度。本教程详细介绍了SMOKE单目3D目标检测模型在RK3588上的部署。我们从SMOKE的。 阅读详情

相关推荐

新出的智谱GLM-4.7很牛逼?

Zhipu AI(智谱)最近发布的 GLM-4.7 再次刷新了开源大模型的天花板。作为一款约 400B 参数规模的 MoE 模型,它不仅在传统的代码与推理任务上超越了 DeepSeek-V3.2 和 Kimi-K2 等强力对手,更通过**“保留思考(Preserved Thinking)”和“交错思考(Interleaved Thinking)”**等架构级创新,重新定义了 Agentic Workflow 的设计范式。

kakaZhui的博客 2397

数据结构|二叉树的三种遍历方式,你掌握了几种?

本期讲解二叉树的三种遍历方式:前序遍历、中序遍历、后序遍历的详细讲解,图文并茂通俗易懂。

我的主页 1万+

1.28寸圆屏LCD驱动开发:GC9A01与RT-Thread嵌入式实现

圆形TFT-LCD是一种面向可穿戴、IoT终端的紧凑型人机交互显示技术,其核心在于SPI/QSPI接口时序控制与GRAM内存映射原理。通过驱动芯片(如GC9A01)完成电源管理、伽马校正和MADCTL方向配置,可实现低功耗、高刷新率的图形渲染。该技术显著提升嵌入式设备的UI表现力与空间利用率,在智能手环、传感器节点、微型HMI等资源受限场景中具备突出工程价值。本文围绕1.28寸圆屏LCD模块,详解硬件接口规范、RT-Thread下QSPI驱动架构及Bresenham算法优化实践。

weixin_42599908的博客 158

二叉树遍历的几种常见方法

二叉树的遍历方法 一.二叉树分类: 完全二叉树 满二叉树 扩充二叉树 平衡二叉树 二.二叉树的四种遍历方式: 前序遍历(先根,再左,最后右) 中序遍历(先左,再根,最后右) 后序遍历(先左,再右,最后根) 层次遍历(说不清) 1.递归遍历 (1)前序遍历 遍历方法:先根节点,再左节点,最后右节点。 实现代码: /*声明结点TreeNode类*/ public static void preOrderTraveral(TreeNode node){ if(node == null){

xie_bro的博客 2万+

基于YOLOv5与海康工业相机的高分辨率实时检测实践

本文详细介绍了基于YOLOv5与海康工业相机的高分辨率实时检测实践,通过优化相机配置、网络传输和YOLOv5模型适配,实现了每秒15帧以上的实时检测性能,缺陷识别准确率高达99.2%。特别适用于电子元件焊接点检测、精密齿轮齿痕检查等对微小缺陷敏感的场景。

weixin_30872499的博客 474

时序数据库避坑指南:TDengine与IoTDB在车联网场景的7个关键对比

本文对比了时序数据库TDengine与IoTDB在车联网场景下的7个关键差异,包括数据模型设计、边缘-云端协同能力、车规级函数库、存储压缩算法等。通过真实案例和性能测试,帮助企业在新能源汽车大数据处理中选择合适的时序数据库,优化存储成本和实时告警性能。

rust6ferris的博客 453

数据结构—二叉树的4种遍历方式详解以及Java代码的完整演示

本文介绍了4种二叉树的遍历方法,分别是前序、中序、后续、层序遍历,并且每种方法均提供了详尽的Java语言的代码演示,在最后还介绍了遍历结果推导的方法。

终生学习践行者 1万+

Mplus—交叉滞后面板模型(Cross-Lagged Panel Model, CLPM)

本文介绍交叉滞后模型相关知识,以及显变量模型与潜变量模型在Mplus中的语法。

m0_54401011的博客 1万+

二叉树的五种遍历方式

目录 1、前序遍历 (1)递归实现前序遍历 (2)非递归实现前序遍历 2、中序遍历 (1)递归实现中序遍历 (2)非递归实现中序遍历 3、后序遍历 (1)递归实现后序遍历 (2)非递归实现后序遍历 4、层序遍历 二叉树是一种重要的数据结构,其遍历方式分为:深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即就是层次遍历。如下图: class TreeNode{ int val; TreeNode left; TreeNode ..

weixin_47382783的博客 1万+

CISSP/CCSP证书到手后别松懈!保姆级维持攻略:CPE积分怎么攒?年费怎么交?

本文为CISSP/CCSP持证者提供详细的维持认证攻略,重点介绍如何高效积累CPE积分和避免年费缴纳中的常见问题。通过免费与付费资源结合的策略,帮助持证者轻松完成年度认证要求,同时利用认证创造职业价值。

weixin_30859423的博客 416

宇树科技嵌入式面试题及参考答案(春晚机器人的公司)

内存对齐是指在内存中为数据对象分配存储空间时,按照一定的规则将数据存储在特定的地址上,以提高内存访问效率。不同的数据类型在内存中都有其特定的对齐要求,例如,int类型通常要求 4 字节对齐,double类型通常要求 8 字节对齐。这意味着数据的存储地址必须是其对齐字节数的整数倍。如果不进行内存对齐,处理器在访问数据时可能需要进行多次内存访问,从而降低了访问效率。指令可以用于控制结构体内存布局,它允许程序员指定结构体成员的对齐方式。其基本用法是在结构体定义之前使用来指定对齐字节数n,其中n。

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

图解二叉树及二叉树遍历

二叉树及二叉树遍历 完全二叉树 二叉树的遍历 遍历的性质 1、完全二叉树 对于一棵具有n个节点的二叉树(按层序编号),如果编号为i的节点与同样深度的满二叉树中编号为i的节点在二叉树的位置完全相同,则为完全二叉树。 换句话来说,如果每个节点按照满二叉树的结构逐层顺序进行编号,如果编号出现编号空挡,就说明不是完全二叉树,否则就是。如下图所示:左边二叉树按照完全二叉树进行编号,出现了10号的空挡,右边

xiaotan2011929的博客 2万+

Linux 4.19、Linux 5.10、Linux 6.1 三个版本详细分析

Linux 4.19发布日期:2018年10月22日LTS 状态:是长期支持版本,官方支持到2024年12月。Linux 5.10发布日期:2020年12月13日LTS 状态:LTS 版本,官方支持到2026年12月。Linux 6.1发布日期:2022年12月11日LTS 状态:不是官方的LTS版本,但通常社区会为新的版本提供一定时间的支持。定位:稳定性和长期支持,广泛应用于多种平台,尤其是嵌入式系统和服务器。主要优势:稳定性高,广泛的硬件支持,核心功能可靠。

小灰灰的博客 5956

详解二叉树的遍历

概述 二叉树的遍历是一个很常见的问题。二叉树的遍历方式主要有:先序遍历、中序遍历、后序遍历、层次遍历。先序、中序、后序其实指的是父节点被访问的次序。若在遍历过程中,父节点先于它的子节点被访问,就是先序遍历;父节点被访问的次序位于左右孩子节点之间,就是中序遍历;访问完左右孩子节点之后再访问父节点,就是后序遍历。不论是先序遍历、中序遍历还是后序遍历,左右孩子节点的相对访问次序是不变的,总是先访问左孩子...

supermouse的博客 1万+

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

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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

二叉树的前序遍历(先序遍历)、中序遍历、后续遍历及两种遍历序列推导二叉树

二叉树的遍历: 前序遍历(先序遍历)、中序遍历、后续遍历 二叉树的遍历是指不重复地访问二叉树中所有结点,主要指非空二叉树,对于空二叉树则结束返回,二叉树的遍历主要包括前序遍历、中序遍历、后序遍历 给定了二叉树的任何一种遍历序列,都无法唯一确定相应的二叉树。但是如果知道了二叉树的中序遍历序列和任意的另一种遍历序列,就可以唯一地确定二叉树。 一、前序遍历(先序遍历):(根->左->右) 前序遍历:首先访问根结点,然后遍历左子树,最后遍历右子树; 顺序:访问根节点->前序遍历左子树->前

DayDayUp 9444

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

二叉树的遍历和线索二叉树

若二叉树为空,则空操作;否则(1)访问根结点(2)先序访问左子树(3)先序访问右子树//采用二叉链表存储结构,Visit是对数据元素操作的应用函数//先序遍历二叉树T的递归算法,对每个数据元素调用函数Visit//最简单的Visit函数是:// status PrintElement(TElemType e){//输出元素e的值//使用时,加上格式串//调用实例:PreOderTranverse(T,PrintElement);if (T){

2401_87880211的博客 2385

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

二叉树及先序遍历二叉树,中序遍历二叉树,后序遍历二叉树

目录 定义结点数据类型 建立一颗带头结点的二叉树 遍历 访问函数 主代码 定义结点数据类型 typedef struct bitnode { char data; struct bitnode *Lchild,*Rchild; } BiTNode,*BiTree; 建立一颗带头结点的二叉树 BiTree CreatTree() { BiTree p...

小小前端攻城狮的博客 3543

二叉树遍历 和 线索二叉树

其实你获得这串顺序编号就是通过访问操作而来的假设访问操作是 visit(p) #p是指向被访问的节点“输出参数p所指向地址的节点的编号void visit(二叉树结构的指针类型 p)printf("%c",p->data) #我们在遍历中默认:二叉树结构中data存储的是二叉树的编号。通过上述代码你在用遍历过程中根据visit添加位置的不同就能确定二次树的访问顺序到这里你应该已经能明白大部分的问题了,我们开始通过代码对知识的巩固。

m0_63523451的博客 1900

遍历二叉树

二叉树遍历

weixin_52555350的博客 5919

二叉树的遍历以及遍历序列构建二叉树

文章目录二叉树的遍历NLR 前序遍历LNR 中序遍历LRN 后序遍历通过遍历序列构造二叉树中序 + 后序中序 + 前序 结点结构: typedef struct Node{ ElementType value; Node* left; Node* right; Node(ElementType value_, left_ = NULL, right_ = NULL) :value(va...

还是应该要努力的(12点前睡觉!!!!! 1036

二叉树遍历

二叉树:二叉树是每个节点最多有两个子树的树结构。   本文介绍二叉树的遍历相关知识。 我们学过的基本遍历方法,无非那么几个:前序,中序,后序,还有按层遍历等等。 设L、D、R分别表示遍历左子树、访问根结点和遍历右子树, 则对一棵二叉树的遍历有三种情况:DLR(称为先根次序遍历),LDR(称为中根次序遍历),LRD (称为后根次序遍历)。 首先我们定义一颗二叉树 typedef cha...

少说,多做。 8237

二叉树的遍历

遍历一棵二叉树有很多种方法。假如用D、L、R分别代表二叉树的根结点、左子树、右子树,那么要遍历这棵二叉树,方法就有6种:DLR、DRL、LDR、LRD、RDL、RLD。一般在遍历时遵循先左后右的原则,因此常用的遍历方法有三种:DLR,称为先(根)序遍历;LDR,称为中(根)序遍历;LRD,称为后(根)序遍历。

super码力的博客 3602

二叉树之遍历

二叉树常见遍历方法

my_air的博客 1164

js实现二叉树遍历

js实现二叉树遍历二叉树遍历1、递归遍历(前、中、后)2、层序遍历3、重建二叉树参考文献 二叉树遍历 常用的二叉树的遍历方式:前序遍历、中序遍历、后序遍历、层序遍历 (1)前序遍历:左、右、根; (2)中序遍历:左、根、右; (3)后续遍历:左、右、根; (4)层序遍历:从上到下,同层节点从左到右。 1、递归遍历(前、中、后) //节点结构 /* function TreeNode(x) { ...

YongxiaWu的博客 6024

一文了解二叉树的遍历和线索二叉树

了解二叉树的遍历和线索二叉树

weixin_73681410的博客 1040
上一篇: linux下的进程通信
下一篇: 有名管道(FIFO)的用法
michaeljohn671
博客等级 码龄15年 5粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值