数据结构 - 二叉树的遍历

《数据结构》—— 遍历线索二叉树 中、先、后序线索二叉树的遍历查找,代码实现遍历中序线索二叉树 阅读详情

树的结构

定义二叉树的数据结构如下:

typedef struct BiTNode  // 节点结构
{
   TElemType data;		// 节点数据
   struct BiTNode *lchild,*rchild; // 左右孩子指针
}BiTNode,*BiTree;

构成下图所示的二叉树为例:包含 A ~ I 共9个节点

遍历方式

目前基本是采用递归的方式来对树进行遍历,核心就是先递归遍历左子树,再递归遍历右子树

void Traverse(BiTree T)
{
	if(T==NULL)
		return;
	Traverse(T->lchild); /* 先遍历左子树  */
	Traverse(T->rchild); /* 再遍历右子树  */
}

运行顺序如下图所示:

前序遍历

【注】:图中的各类图形表示说明

添加对节点的输出操作后(也可以为其他操作),遍历结果如下图所示,左上角为对节点的输出操作在完整的遍历过程中所处的步骤,右下角为遍历的逻辑顺序。

【注】:逻辑顺序不代表程序实际运行的顺序,比如对于右下角5号线,树在遍历时并不能直接跳过去,而是通过左上角所示的完整运行步骤中的10~14号线依次运行过去的。

中序遍历

后序遍历

层序遍历

....有空再详写,很直观 一层一层依次往下

 

 

参考

《大话数据结构》

数据结构 树 层次遍历二叉树 C语言版 //层次遍历二叉树并输出结点的算法 #include #include typedef struct NNode { char data; struct NNode *LChild; struct NNode *RChild; } BiTNode,*BiTree; //定义二叉树结点和结点指针 typedef BiTree QueueElementType; typedef str 阅读详情

相关推荐

数据结构——二叉树的遍历

二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。二叉树的遍历方式有很多,主要分为以下三种:1.二叉前序遍历规则:若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。注意这里的定义也采用了递归的方式,那么我们如果去理解呢,我们先看一个简单的例子:这是一个最简单的二叉树,我们按照前序遍历的原则,先根结点-A,再左...

ZeroZiano博客 994

二叉搜索树

二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。 ...

qq_44688635的博客 234

数据结构-二叉树及其遍历

本篇文章咱们聊聊数据结构中的树,准确的说因该是只说一说二叉树以及相关的三种递归遍历、三种非递归遍历以及层次遍历。🍃二叉树 (BinaryTree) 是 n (n>0) 个结点所构成的集合,它或为空树(n-0)或为非空树,对于非空树(1) 有且仅有一个称之为根的结点:(2) 除根结点以外的其余结点分为两个互不相交的子集 TI 和 T2,分别称为 T 的左子树和右子树,且 T1 和 T2 本身又都是二叉树。🍃二叉树与树一样具有递归性质,二叉树与树的区别。

宁zz的博客 1064

二叉树中typedef struct BiTNode{ TElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;

这里的*BiTree一直不太理解是啥 刚刚终于整明白了, typedef struct BiTNode{ TElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; 它就完全等于 typedef struct BiTNode{ TElemType data; struct BiTNode *lchild,*rchild; }; typedef struct BiTNode BiTNode和typedef struct BiTN

qq_38801465的博客 6014

别再到处找模板了!我用这套软著申请材料(含用户手册+源代码模板)两个月搞定

本文提供了一套高效的软著申请材料模板,包括用户手册和源代码模板,帮助开发者两个月内快速完成申请。通过实战指南和常见误区解析,详细介绍了材料准备的规范与技巧,确保格式合规性,大幅提升审核通过率。

weixin_29268637的博客 549

国产操作系统应用迁移与适配

了解国产操作系统的背景及意义

2301_77609559的博客 2680

二叉树中的中的 BiTNode 和*BiTree 是什么,typedef struct BiTNode{ TElemType data; struct BiTNode *lchild

typedef struct BiTNode{     TElemType  data;     struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; 第四行代码中的 BiTNode 和*BiTree 是什么 其实这里让你迷糊的点并不是结构体,而是typedef的使用,耐心的看。 typedef的定义:

xiaoninvhuang的博客 3万+

聚类模型-层次聚类

聚类模型 1、层次聚类 2、原型聚类-K-means 3、模型聚类-GMM 4、EM算法-LDA主题模型 5、密度聚类-DBSCAN 6、图聚类-谱聚类 一、层次聚类 一、聚类理论 ​ 一般来说,聚类是在训练样本的标签信息不知的情况下,学习样本内在的性质和规律,将有限的集合划分成ccc类。根据“方以类聚,物以群分”的思想,类内对象尽可能的相似,...

myazi 6504

数据结构-树

》树:n个结点的有限集。常用操作是遍历,是一种典型的非线性数据结构,具有一对多的关系。     -在非空树中:有且仅有一个根节点(Root);当n>1时,其余结点可以分为m个(m>0)互不相交的有限集T1,T2,...,Tm,其中Ti为根的子树。树中不可以有回路。        -结点:树中的一个数据元素及指向其子树的分支。        -结点的度:结点拥有的子树数。        ...

愚 公 851

通达信K线主图指标公式实战:如何用颜色标记快速识别涨停与炸板信号

本文详细介绍了如何利用通达信K线主图指标公式,通过颜色标记快速识别涨停与炸板等关键信号。通过实战拆解公式源码,手把手教您构建直观的“视觉交易系统”,将复杂的K线形态转化为醒目的颜色信号,帮助投资者高效聚焦机会与风险,提升技术分析效率。

weixin_29302047的博客 1783

【WorkBuddy】WorkBuddy 智能体快速上手:从零到一的实践指南

文章摘要: 传统自动化脚本难以应对灵活多变的自然语言需求,导致逻辑复杂、维护成本高。智能体(Agent)通过理解语义意图、动态决策和松耦合组件解决了这些问题。WorkBuddy采用声明式配置,通过可视化界面定义意图、实体和对话策略,无需编码即可快速构建智能体。其核心组件包括意图分类、实体提取、对话策略、故事样本和回退机制,适用于客服支持、知识问答等高频场景。通过环境准备(Python/Node.js/Redis)和简单配置,用户可以快速搭建可运行的智能体,显著提升自动化效率。

ruiqideng的博客 1688

数据结构之——二叉树(2)

一:二叉树的建立 1:二叉链表的结点结构定义代码 // 二叉树的二叉链表结点结构定义 typedef struct BitNode { TElemType data; // 结点数据 struct BitNode *lchild, *rchild // 左右孩子指针 } BitNode, *BiTree; 2:二叉树的建立的代码部分 // 按前序遍历输入二叉树中结点的值(一个字符) // 若输入‘#’,则表示空树,构造二叉链表表示二叉树 T void CreatBiTree(BiTree T) {

WenJieya的博客 1309

14、网络切片技术:原理、应用与挑战

本文详细探讨了网络切片技术的原理、应用场景及其在5G网络中的重要性。网络切片作为一种关键的网络架构技术,能够在同一物理网络上创建多个独立的逻辑网络,以满足不同应用对安全性、可靠性和性能的多样化需求。文章深入分析了网络切片在5G、SDN/NFV等技术背景下的发展与挑战,并探讨了其在制造业、交通运输、零售等多个行业的实际应用。此外,还介绍了网络切片的部署流程、未来发展趋势以及相关技术难点,为读者全面了解网络切片技术提供了有价值的参考。

palm99的专栏 255

【数据结构】二叉树的三种遍历

遍历二叉树是指按照一定的顺序访问二叉树中的所有节点。常用的三种二叉树遍历方式是前序遍历、中序遍历和后序遍历

javamyfriend的博客 1752

SAPGUI 与 ADT 的时代分野:在多云架构下,谁还能代表现代 SAP 开发

摘要(149字) SAP开发工具正经历代际更迭:SAPGUI基于专有协议(NI/DIAG)的厚客户端架构难以适配多云环境,而ADT(ABAP Development Tools)通过HTTP(S)协议和Eclipse生态成为ABAP Cloud/RAP开发的唯一入口。关键差异体现在:ADT支持CDS、行为定义等云原生对象建模,天然对齐BTP的零信任网络;集成ATC、Git等DevOps工具链;而SAPGUI无法创建RAP核心对象,在跨平台、自动化方面存在硬限制。官方文档明确将ADT作为Clean Core战

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 392

【服务器电源架构与关键技术发展趋势】AI数据中心迅猛发展,服务器电源如何演变?

功率级跃升:机柜功率从 100kW 向 1MW 级发展,供电架构采用 HVDC + 固态变压器(SST),省去传统 UPS、PFC 环节; 母线电压升级:从 48V 向 400V→800V 演进,配套 AI 电弧检测、智能运维解决高压安全与维护难题; 能效(PUE)提升:目标 PUE<1.3,通过液冷 CDU 替代传统风冷,可将 PUE 降至 1.16(传统 AI 集群 PUE 达 1.6); 拓扑控制复杂化:功率拓扑从单相→三相、单级→多交错结构,适配高功率需求; 安全维度扩展:新增网络安全防护需求。

昔时扬尘处 1451

【数据结构】二叉树的遍历

本章将会详细讲解二叉树的遍历的四种方式,分别为前序遍历、中序遍历、后续遍历和层序遍历。在学习遍历之前,会先带大家回顾一下二叉树的基本概念。学习二叉树的基本操作前,需要先创建一颗二叉树,然后才能学习其相关的基本操作,考虑到我们刚刚接触二叉树,为了能够先易后难地进行讲解,我们将暂时手动创建一颗简单的二叉树,用来方便大家学习。等二叉树结构了解的差不多后,后期我们会带大家研究二叉树地真正的创建方式。

有道无术, 术尚可求。有术无道, 止于术。 1万+

OV9734 DATASHEET,完整规格书

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

数据结构——实验三 二叉树的遍历

一、【实验目的】 1、 了解二叉树的前序、中序、后序和层次序列排列; 2、 将C语言同二叉树的数据结构联系起来; 3、 掌握生成的二叉树的链表结构; 4、 掌握如何按层次输出二叉树的所有结点; 5、 掌握如何将动态二叉树转换为静态二叉链表。 二、【实验内容】 创建一个二叉树,对这棵动态二叉树进行分析,将其用静态二叉链表表示。二叉树的动态二叉链表结构中的每个结点有三个字段:dat...

Zichel77的博客 3785

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数据结构——二叉树的遍历【前序、中序、后序】

按照规则,二叉树的遍历有:前序/中序/后序的递归结构遍历: 1. 前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。 2. 中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中(间)。 3. 后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。

Renswc的博客 3439

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

《数据结构》实验二——二叉树的遍历

《数据结构》实验二报告 日期: 2020-11-23 程序名: shiyan2.c 实验内容: 二叉树的遍历 一、目的和要求(需求分析): 1、掌握二叉树的存储结构以及二叉树的建立和操作。 2、输入一串表达式后,建立二叉树,并对其进行先序、中序和后序的遍历。 (输入表达式如此形式:a+b*c-d-e/f….;以#号结束。) 3、递归实现表达式运算。 二、程序设计的基本思想,原理和算法描述: 程序的结构:首先定义二叉树,随后创建二叉树,此时利用flag判断记录表

123的博客 3117

非递归遍历二叉树(数据结构)

因为中序遍历是左根右,给定一个辅助栈,每次走到最后一个节点的left或者right为空时将栈中的元素给到数组,然后再去遍历栈顶右边元素是否为空。在数据结构中的学习难免少不了递归的学习,递归有时候也会让代码变得更加简洁,学习递归让我们对代码有更近一步的思考。每遍历一个节点打印一次元素且将其放入栈中,直到为空时,将栈顶元素移除来并打印并让其查看另一子树是否为空节点。二叉树的遍历方式有:前序遍历、中序遍历、后续遍历,层序遍历,而树的大部分情况下都是通过递归的方式来进行的。

Freedom的博客 2028

C语言数据结构——遍历二叉树

1、二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中的所有结点,使得每个节点被访问依次且仅被访问一次。2、前序遍历: 规则是若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树。 遍历的顺序为:1 2 4 8 5 3 6 9 10 7/*前序遍历算法*/ void PreOderTraverse(BiTr

sunshine_rebrith的博客 1万+

数据结构——二叉树的层序遍历

除了先序遍历、中序遍历、后序遍历外,还可以对二叉树进行层序遍历。设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。层序遍历关键点在于它对于队列的使用与理解,🥳🥳大家都学废了吗完结撒花~ 🎉🎉🎉。

Renswc的博客 2427

【数据结构】二叉树遍历的实现

递归实现二叉树遍历算法思想(1)先序遍历:(2)中序遍历(3)后序遍历二叉树示意图先序遍历中序遍历后续遍历代码实现 算法思想 按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示 (1)先序遍历: 访问根结点 先序遍历左子树 先序遍历右子树 (2)中序遍历 中序遍历左子树 访问根节点 中序遍历右子树 (3)后序遍历二叉树 后序遍历左子树 后序遍历右子树 访问根节点 示意图 先

Black_Customer的博客 8390

数据结构入门-二叉树与遍历

二叉树(Binary Tree)是n(n>=0)个节点所构成的集合,它或为空树(n=0),或为非空树,对于非空树T:(1)有且仅有一个称为根的节点。(2)除根节点外的其余节点分为两个互不相交的子集T1和T2,分别称为T的左子树和右子树,且T1和T2本身又都是二叉树。(3)二叉树每个节点至多只有两颗子树。(4)二叉树的子树有左右之分,其次序不能任意颠倒。

2401_85870305的博客 1319

数据结构 | 二叉树遍历(Java)

二叉树的节点定义

xxzaa的博客 1119
上一篇: 数字图像处理 - 仿射变换
下一篇: 实现链表与哈希表相结合的快速表
且听风吟0618
博客等级 码龄11年 150粉丝 25原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值