数据结构之树和二叉树---二叉树的遍历

【牛股启动线】副图指标使用技术说明,图文案例分享,通达信炒股指标 如上图,在紫色线在黑色虚线上时,在出现紫色柱线时,通常会出现强势拉升的行情​。柱线加长加上紫色线上扬,进场跟随做多抓强势行情,紫色柱线和紫色线同时做多持续则可以继续持股。如上图,副图指标【牛股启动线】,指标信号包括紫色线走势信号和紫色柱线信号,以及底部的四条虚线技术信号​,还有一条绿色的参考线,一条黑色的虚线两天分档线。如上图,参考买点,紫色柱线开始出现时进场买点,在上图标记的位置对应的就是进场买点​。紫色柱线加长+紫色线上扬,多头共振持股,行情继续拉升阶段,持股待涨或顺势​进场做多。 阅读详情

问题:分别用递归和非递归方式实现二叉树的先序遍历,中序遍历,后序遍历及层序遍历

二叉树的基本操作见数据结构之树和二叉树---二叉树的基本操作

//递归方式实现先序遍历

void PreOrderTraverse(BiTree bt)
{
	if(bt)
	{
		printf("%c ", bt->data);
		PreOrderTraverse(bt->lchild);
		PreOrderTraverse(bt->rchild);
	}else
		printf("0 ");
}

//递归方式实现中序遍历

void InOrderTraverse(BiTree bt)
{
	if(bt)
	{
		InOrderTraverse(bt->lchild);
		printf("%c ", bt->data);
		InOrderTraverse(bt->rchild);
	}else
		printf("0 ");
}

//递归方式实现后序遍历

void PostOrderTraverse(BiTree bt)
{
	if(bt)
	{
		PostOrderTraverse(bt->lchild);
		PostOrderTraverse(bt->rchild);
		printf("%c ", bt->data);
	}else
		printf("0 ");
}

//递归方式实现层序遍历

void LevelOrderTraverse(BiTree bt, LinkQueue *lq)
{
	ElemType elem;
	if(lq->front!=lq->rear)
	{
		DeQueue(lq, &elem);
		if(elem!=NULL)
		{
			printf("%c ", elem->data);
			EnQueue(lq, elem->lchild);
			EnQueue(lq, elem->rchild);
		}else
			printf("0 ");
		LevelOrderTraverse(bt, lq);
	}
}

//非递归方式实现先序遍历

void PreOrderTraverse_N_Recur(BiTree bt)
{
	ElemType stackElem;
	MyStack *stack = InitStack();
	PushStack(stack, bt);

	while(stack->top!=stack->base)
	{
		PopStack(stack,&stackElem);
		if(stackElem!=NULL)
		{
			printf("%c ", stackElem->data);
			PushStack(stack,stackElem->rchild);
			PushStack(stack, stackElem->lchild);
		}else
			printf("0 ");
	}
}

//非递归方式中序遍历

void InOrderTraverse_N_Recur(BiTree bt)
{
	ElemType stackElem;
	MyStack *stack = InitStack();
	PushStack(stack, bt);

	while(stack->top!=stack->base)
	{
		while((stackElem=(*(stack->top-1))->lchild)!=NULL)
			PushStack(stack, stackElem);
		do
		{
			printf("0 ");
			PopStack(stack, &stackElem);
			printf("%c ", stackElem->data);
		}while(!stackElem->rchild&&stack->top!=stack->base);
		if(stackElem->rchild!=NULL)
			PushStack(stack, stackElem->rchild);
		else
			printf("0 ");
	}
}

//非递归方式后序遍历

void PostOrderTraverse_N_Recur(BiTree bt)
{
	ElemType stackElem;
	MyStack *stack = InitStack();
	BiTNode *tbn;
	PushStack(stack, bt);

	while(stack->top!=stack->base)
	{
		while((stackElem=*(stack->top-1))->lchild!=NULL)
			PushStack(stack, stackElem->lchild);
		printf("0 ");
		if(stackElem->rchild!=NULL)
			PushStack(stack, stackElem->rchild);
		else
		{
			printf("0 ");
			PopStack(stack, &stackElem);
			while (stack->top!=stack->base)
			{
				while((*(stack->top-1))->rchild==stackElem)
				{
					printf("%c ", stackElem->data);
					PopStack(stack, &stackElem);
					if (stack->top==stack->base)
					{
						printf("%c ", stackElem->data);
						return ;
					}
				}
				if((*(stack->top-1))->lchild==stackElem)
				{
					printf("%c ", stackElem->data);
					if((*(stack->top-1))->rchild!=NULL)
					{
						PushStack(stack, (*(stack->top-1))->rchild);
						break;
					}
					else
					{
						printf("0 ");
						PopStack(stack, &stackElem);
					}
				}
			}
		}
	}
	return ;
}

//非递归方式实现层序遍历

void LevelOrderTraverse_N_Recur(BiTree bt)
{
	ElemType elem;
	LinkQueue *lq = InitQueue();

	EnQueue(lq, bt);
	while(lq->front!=lq->rear)
	{
		DeQueue(lq, &elem);
		if(elem!=NULL)
		{
			printf("%c ", elem->data);
			EnQueue(lq, elem->lchild);
			EnQueue(lq, elem->rchild);
		}else
			printf("0 ");
	}
}


Vue3 - Element Plus 树形表格组件 el-table 一键全部展开折叠功能,支持动态数据及懒加载点击父级才去请求的场景,Tree树状表格每行带有children的表格全部收起和折叠! vue3,element-plus,表格Table组件,el-table,怎样一键展开/收起,一键展开或折叠树形表格,如何通过按钮来实现全部展开,不生效,一键折叠或展开表格,表格children嵌套,带有子集,多级表格,懒加载,动态数据,table表格的children通过后端请求过来的怎么一键展开请求数据呢,表格如何一键展开和折叠,怎么使用,教程,树形数据table全部展开和折叠,一键展开或折叠树形表格,点击展开接口获取数据,toggleRowExpansion,树形表格懒加载与全部折叠,深层多级,复杂, 阅读详情

相关推荐

Qt 5.15.2静态编译避坑实录:MinGW 32位版从源码到Creator配置的全流程踩坑总结

本文详细介绍了Qt 5.15.2 MinGW 32位版本的静态编译全流程,包括环境准备、配置参数优化、编译过程监控及安装后配置。重点解决了静态编译中的常见问题,如参数顺序敏感、路径引号问题等,并提供了性能对比实测数据,帮助开发者高效完成静态编译。

weixin_26749245的博客 271

遍历二叉树(必背的七个算法)

遍历二叉树(必背的七个算法) 遍历二叉树是以一定规则将二叉树中结点排列成一个线性序列,实质是对一个非线性结构进行线性化操作。 (1)前序遍历的递归实现 voidPreOrder(BiTreebt)/*前序遍历二叉树bt*/ {if(bt==NULL)return;/*递归调用的结束条件*/ Visit(bt->data);/*访问结点的...

weixin_30546933的博客 285

Python爬虫实战:用BeautifulSoup和Pandas轻松抓取去哪儿网景点数据(附完整代码)

本文详细介绍了如何使用Python的BeautifulSoup和Pandas库构建一个高效的旅游数据爬虫,从去哪儿网抓取景点数据。内容涵盖环境准备、网页结构分析、核心代码实现、反爬策略以及数据清洗与存储,提供完整代码示例,帮助开发者快速掌握数据采集技术。

river的博客 357

树—最“有套路”的数据结构

前言不格小说网 www.vbuge.com 标题用“有套路”来形容一种数据结构,似乎有点不尊重的意思。不过,我倒是觉得,一种实用的学科,就是应该产生一点套路,这才能发挥体系化研究的优势,套路就是一种保证:在不投入更多创造性与努力的情况下,依旧能获得比起随意进行相关操作更好的结果。一门成熟的学科都应如是,如果研究许久,在学科所研究的许多问题的实践上还不如一些“天赋”“灵感”,那就不得不说这...

终极冥帝 397

随机森林模型及案例(Python)

1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投

qq_42433311的博客 4万+

【gridsample】地平线征程6芯片中gridsample算子的优化与部署实践

本文详细介绍了地平线征程6芯片中gridsample算子的优化与部署实践,重点探讨了PTQ和QAT量化方案在BEV感知任务中的应用。通过双线性插值优化、内存布局调整和混合精度配置等关键技术,显著提升了算子在自动驾驶场景下的性能和精度,为开发者提供了实用的部署指南和调优建议。

zero1的博客 1019

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

二叉树的先序遍历、中序遍历和后序遍历的递归算法,二叉树的非递归算法。 1、括号表示法创建二叉树 2、实现二叉树的递归遍历算法和非递归遍历算法(非递归算法选做),依次输出二叉树的先序、中序和后序遍历序列 3、二叉树的遍历遍历二叉树,输出结点值大于C的结点,而小于等于C的结点用*替代 4、遍历二叉树,输出结点值小于D的结点,而大于等于D的结点用*替代 main.cpp #include &lt...

qq_39637327的博客 1069

AXI 1G/2.5G Ethernet Subsystem IP核使用过程中参数配置全解

AXI 1G/2.5G Ethernet Subsystem 是一个为FPGA设计的以太网子系统,它支持1Gbps和2.5Gbps的数据传输速率,使得FPGA能够直接进行高速以太网通信。这个子系统通常包含以太网MAC控制器、GMII(千兆媒体独立接口)或RGMII(简化GMII)接口、以及可选的PHY(物理层)接口支持。

u011565038的博客 1万+

数据结构--树

树型结构和图型就是其中十分重要的非线性结构,可以用来描述客观 世界中广泛存在的层次结构和网状结构的关系,如家族谱、城市交通 等。二叉树不是树的特例二叉树与无序树不同: 二叉树中,每个结点最多只能有两棵子树,并且有左右之分。二叉 树并非是树的特殊情形,它们是两种不同的数据结构。二叉树与度数为2的有序树不同: 在有序树中,虽然一个结点的孩子之间是有左右次序的,但是若该 结点只有一个孩子,

Nim的辙迹 453

【OpenClaw企业级智能体实战】第04篇:OpenClaw成本优化实战——Token消耗降96%!claude-mem+OpenViking从入门到精通

OpenClaw作为企业级智能体框架,凭借强大的自动化能力成为企业数字化转型的热门工具,但原生机制导致的上下文冗余问题,让众多用户面临“Token消耗失控”的困境——单周账单数千元的案例屡见不鲜。本文基于阿里云实测数据与开源工具官方文档,先深度拆解OpenClaw成本黑洞的核心成因(记忆碎片化、Token指数级膨胀),再系统讲解两款核心优化工具(claude-mem单Agent记忆管理、OpenViking多Agent集群底座)的底层原理、算法架构与实现逻辑,提供从环境搭建、工具集成、参数调优到安全部署

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 703

Winform利用动画控制实现各种特效

动画绘制控制类代码 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Threading; using System.Windows.Forms; namespace Mengliao.CSharp.A14 { #region 动画类型枚举 // 本例为了简单起见没有使用见名知意的名称,如用于实际可将这些枚举成员更名

LilyCoder的博客 2501

常用数据结构之二叉树及树的四种遍历方式

1.树 我们选择一种数据结构,不仅要能存储数据,而且要能体现数据之间的关系。目前数据主要有是三种关系一对一、一对多、多对多;之前我们讨论了线性表(数组、链表、栈、队列),其中的元素具有一对一的关系,通过元素之间左右相连来表达数据。为了表达具有一对多关系的数据,我们引进了树的概念。掌握树的关键就在于掌握这种不断延伸的一对多的关系。 下面我们介绍几种约定俗称的概念: ...

gaobing1993的博客 2148

【踩坑记录】pandas.to_sql 报 “‘Engine‘ object has no attribute ‘cursor‘”,最后竟然是环境问题

摘要 本文记录了使用pandas+SQLAlchemy+pymysql将数据写入MySQL时遇到的"Engine对象无cursor属性"错误及其解决方案。问题表现为to_sql方法将SQLAlchemy引擎误认为普通DBAPI连接,导致调用cursor()方法失败。经排查发现,这是由于pandas/SQLAlchemy环境损坏所致,而非代码问题。最终通过完全卸载并重新安装pandas(≥2.1)、SQLAlchemy(≥2.0)和pymysql解决了该问题。文章还建议将遗留的read_s

每日出拳老爷子的博客 336

树、森林和二叉树的遍历---数据结构

首先,我们来了解下基本概念: 遍历是指按照某种次序访问所有结点,使每个结点被访问一次且仅被访问一次。 先序、中序、后序遍历都是针对根节点而言的,先访问根节点即为先序遍历,第二访问根节点为中序遍历,最后访问根节点为后序遍历。 层次遍历是指从根节点开始,逐层向下遍历,每一层上按照从左到右的顺序对结点逐个访问。   下面,我们分别介绍一下 树的遍历 1.先序遍历 (1)访问根节点 (2...

灵活的小胖子 2037

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WINCC7.3破解文件

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

数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)

树是一种非线性数据结构,它由节点和边组成。树的每个节点可以有零个或多个子节点,其中一个节点被指定为根节点。树的节点之间通过边连接。另外,树形结构中,子树之间不能有交集,否则就不是树形结构。树的结构具有层级关系,根节点位于最顶层,而叶节点位于最底层。树的形状可以类比于现实生活中的树,根节点相当于树的根部,而分支和叶子节点则相当于树的枝干和叶子。

luming的博客 6969

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数据结构之树和二叉树及其遍历,包括先序中序求后序和中序后序求先序

数据结构之树和二叉树及其遍历,包括先序中序求后序和中序后序求先序

BYTEDANCE的博客 606

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

数据结构——遍历二叉树和线索二叉树,树和森林

【代码】数据结构——遍历二叉树和线索二叉树,树和森林。

2301_79431343的博客 952

数据结构和算法-树与二叉树的存储结构以及树和二叉树和森林的遍历

先找到根,然后开始按对应的序遍历,如果左右中存在不是叶子节点,则将该节点当作根节点继续按对应的序来遍历。寻找某个节点的父节点时,需要遍历整个数,依次判断是否某个节点的子节点为对应的节点。对应的二叉树即对应的孩子兄弟法表示的树且该二叉树的先序遍历与原树的先根遍历相同。对应的二叉树即对应的孩子兄弟法表示的树且该二叉树的中序遍历与原树的后根遍历相同。通过计算出节点对应左孩子或右孩子的节点数然后判断是否在n个节点的范围内。所以B的右孩子的遍历下去的所有右孩子为原来A节点的孩子。存在指向孩子链表的指针的元素。

llovewuzhengzi的博客 1171

js遍历树节点下的所有子节点_【数据结构与算法】(3)——树和二叉树

树树的基本概念树是一种非线性的数据结构,样子如图所示:树的主要特点是树中的数据是分层存储的,每个元素称为树的节点,最顶层有且只有一个元素,称为根节点,其余层可以有任意数量的节点。除了根节点,其余每一个节点都与上层的一个节点相连,形状类似一倒过来的树。树中的几个基本概念根节点:最顶层的节点,也就是图中的节点0。父节点:某一个节点的上层节点,比如图中节点4的父节点就是节点1,根节点没有父节点...

weixin_39896839的博客 672

数据结构 第五章 树和二叉树——遍历和线索二叉树

5.5 遍历二叉树和线索二叉树 //待补// 5.5.1 遍历二叉树 1.概念     遍历二叉树(traversing binary tree)是指按照某条搜索路径巡访树种每个结点,使得每个结点均被访问一次,而且仅被访问一次。     访问的含义很广,可以是对结点做各种处理,包括输出结点的信息,对结点进行运算和修改等。遍历二叉树是二叉树最基本的操作,也是二叉树其他各种操作的基础,遍历的实质是对二叉树进行线性化的过程,即遍历的结果是将非线性结构的树中结点排成一个线性序列。     由于二叉树的每个结点都可能

weixin_62917800的博客 1619

数据结构之树(建立二叉树、树的先序遍历、中序遍历、后序遍历和层次遍历)

树的链式存储 树的遍历 一、前序遍历 算法思想(递归过程): 访问根结点 先序遍历左子树 先序遍历右子树 //先序遍历的递归调用 void preTravel(BiTree T) { if(T != NULL) { printf("%d", T->data); preTravel(T->lchild); preTravel(T->rchlid); } } ...

weixin_44630656的博客 559

【数据结构】树的遍历、二叉树的性质和相关计算

对于T中的每个结点k,如果它没有左(或右)子结点, 而k’是k的按中序的前面(或后面)结点,那么置结点k的左。无左子结点: t->ltag=1 或 t->lchild =NULL(中序的第一个)无右子结点: t->rtag=1 或 t-rchild =NULL(中序的最后一个)用一个指针root指向根结点,还用一个指针head指向按中序的最前面一个结点。ltag=1,lchild用来存放“线”,指向的是该结点的按中序的前面结点。具有n(n>0)个结点的完全二叉树的深度为[个,次数为2的非叶子结点有。

weixin_62466076的博客 167

【数据结构】树和森林(树和森林的存储结构、树森林二叉树的转换、树和森林的遍历

基于孩子兄弟表示法:如果当前处理的结点在树中有孩子,就把所有孩子结点“用右指针串成糖葫芦”,并在二叉树中把第一个孩子挂在当前结点的左指针下方。如何恢复一个结点的孩子:在二叉树中,如果当前处理的结点有左孩子,就把左孩子和“一整串右指针糖葫芦”拆下来,按顺序挂在当前结点下方。如何恢复一个结点的孩子:在二叉树中,如果当前处理的孩子有左孩子,就把左孩子和“一整串右指针糖葫芦”拆下来,按顺序挂在当前结点下方。2.从树的根结点开始,按树的层序恢复每个结点的孩子。∴适用于找孩子多,找父亲少的场景,如:服务流程树。

m0_61628700的博客 1299

《大话数据结构》--遍历二叉树、树和森林

二叉树的遍历:是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。 二叉树的遍历方法 前序遍历 先访问根结点,然后前序遍历左子树,再前序遍历右子树,如下图,遍历的顺序为:ABDGHCEIF 总结:从上而下依次访问左子树,对于右子树比如下图中的H,I, F可以认为越靠左越优先 中序遍历 从最后一层的左边根结点开始(并不是先访问根结点),先遍历根结点的左子树...

weixin_40029703的博客 272

【数据结构】树与二叉树(廿三):树和森林的遍历——层次遍历(LevelOrder)

本文介绍了树和森林的层次遍历算法(LevelOrder),包括ADL解析及C语言实现

天地玄黄 魑魅魍魉 风花雪月 商角徵羽 1103

算法和数据结构(树)- 二叉树的遍历

大多数能用递归解决的问题,可以用栈来解决。因为他们都有回溯的特性。直接上代码,代码里面解释。代码:要用到递归,复习写递归三大步骤:(下面的代码理解递归很重要)按照从根节点到叶子节点的层次关系,一层一层横向的遍历节点。同一层的节点之间是没有直接关联的,需要借助队列来实现。前序遍历:根节点,左子树,右子树。中序遍历:左子树,根节点,右子树。后序遍历:左子树,右子树,根节点。总结:前中后代表根节点的输出顺序。

yunshancangcang_的博客 623
上一篇: 数据结构之树和二叉树---二叉树的基本操作
O淘_气O
博客等级 码龄14年 22粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值