二叉树的创建与前序中序后序遍历的递归实现

二叉树(一):二叉树的创建以及三种遍历方法的递归实现 我们都知道现实生活中的树长什么样,那么,很明显,二叉树就是一棵“树”,不过它是一个存储数据的一种结构,根在上,向下生长。 当然,这样的存储结构只是其中的一种。在这里,就要引出二叉树的存储和二叉树的遍历了! 树:n(n>=0)个结点的有限集合,n=0时为空树。 二叉树的三种遍历方式 阅读详情

一切都在代码里:

#include <iostream>

using namespace std;

typedef char Item;

typedef struct BTNode
{
	Item data;
	BTNode * lChild;
	BTNode * rChild;
}BTNode,*BTree;

void InitBTree(BTree *T);
void CreateBTree(BTree *T);
void DestroyBTree(BTree *T);
void PreOrderTraverse(BTree T);
void InOrderTraverse(BTree T);
void PostOrderTraverse(BTree T);

 
void Copy(Item *dest,Item *src);

void Copy(Item *dest,Item *src)
{
	*dest = *src;
} 
void InitBTree(BTree *T)
{
	*T = NULL;
}

void CreateBTree(BTree *T)
{
	Item item;
	cin>>item;
	if(item=='#')
	{
		*T = NULL;
	}
	else {
		*T = new BTNode;
		Copy(&((*T)->data),&item);
		CreateBTree(&((*T)->lChild));
		CreateBTree(&((*T)->rChild));
	}
}
void DestroyBTree(BTree *T)
{
	if(*T)
	{
		DestroyBTree(&((*T)->lChild));
		DestroyBTree(&((*T)->rChild));
		delete (*T);
		*T = NULL;
	}	
} 
void PreOrderTraverse(BTree T)
{
	if(T)
	{
		cout<<"node :"<<T->data<<endl;
		PreOrderTraverse(T->lChild);
		PreOrderTraverse(T->rChild);
	}
} 
void InOrderTraverse(BTree T)
{
	if(T)
	{
		InOrderTraverse(T->lChild);
		cout<<"node :"<<T->data<<endl;
		InOrderTraverse(T->rChild);
	}
} 
void PostOrderTraverse(BTree T)
{
	if(T)
	{
		PostOrderTraverse(T->lChild);
		PostOrderTraverse(T->rChild);
		cout<<"node :"<<T->data<<endl;
	}
} 
int main()
{
	BTree tree;
	InitBTree(&tree);
	CreateBTree(&tree);
	cout<<"Pre Order:"<<endl;
	PreOrderTraverse(tree);
	
	cout<<"In Order:"<<endl;
	InOrderTraverse(tree);
	
	cout<<"Post Order:"<<endl;
	PostOrderTraverse(tree);
	
	DestroyBTree(&tree);
	getchar();
} 

输入:

ABD##E##CF###
输出:

Pre Order:
node :A
node :B
node :D
node :E
node :C
node :F
In Order:
node :D
node :B
node :E
node :A
node :F
node :C
Post Order:
node :D
node :E
node :B
node :F
node :C
node :A



二叉树的创建以及前序、中序、后序、层次遍历 文章目录二叉树的创建前序序列和中序序列创建二叉树中序序列和后序序列创建二叉树二叉树的遍历二叉树的前序遍历递归与非递归实现二叉树的中序遍历递归与非递归实现二叉树的后序遍历递归与非递归实现二叉树的层次遍历二叉树的Z字形遍历 二叉树的创建 前序序列和中序序列创建二叉树         我们都知道,二叉树的前序遍历规则和中序遍历规则。         前序遍 阅读详情

相关推荐

C++实现二叉树的创建以及四种遍历方式(递归与非递归)

C++实现二叉树的创建以及四种遍历方式(递归与非递归) 语言这个东西不用真的会忘, 我记得前前后后C++的基本语法我也看了好几遍了,一直没有动手写过什么东西,所以一遍遍的看,一遍遍的忘… … 正好最近在看数据结构,想着自己用C++来实现一下,一方面是熟悉整个逻辑过程,加深对数据结构的理解,另一方面,也熟悉一下C++。 下图是我们要创建的二叉树,其中的#代表空字符; 为了验证我们程序的正确性,现给出此二叉树的四种遍历结果: 前序遍历(Preorder traversal): A B C D E F

weixin_42133358的博客 5934

递归创建二叉树以及一些基本操作

递归创建二叉树以及一些基本操作基本内容 二叉树的基本概念和遍历方式 使用递归创建一个简单的二叉树 二叉树使用递归遍历时的调用栈帧 实现代码 一些基本操作的递归实现 一、一些基本的东西首先我们要明确,二叉树是一种数据结构,相比于之前的顺序表和链表,二叉树是一种非线性结构,比较特殊,刚开始入门二叉树,我们需要了解二叉树的基本结构框架,知道如何搭建一个简单的二叉树,当然在這篇笔记或者博客里面提到的基本都是

Jaxper. 9584

先序递归建立二叉树

用先序递归过程建立二叉树 (存储结构:二叉链表) 输入数据按先序遍历所得序列输入,当某结点左子树或右子树为空时,输入‘*’号

二叉树代码实现——创建、先序,中序和后序遍历(递归和非递归方式),层序遍历及有关的特性

基本子函数 1)树的节点定义 2)创建二叉树 3)二叉树的递归遍历 3.1 先序遍历(根-&amp;amp;amp;gt;左子树-&amp;amp;amp;gt;右子树) 3.2 中序遍历(左子树-&amp;amp;amp;gt;根-&amp;amp;amp;gt;右子树) 3.3 后序遍历(左子树-&amp;amp;amp;gt;根-&amp;amp;amp;gt;右子树) 4)二叉树的非递归遍历

优快云_dzh的博客 1877

夏令营纪实——东南大学计科院&PALM实验室面试全解析

本文详细解析了东南大学计科院与PALM实验室夏令营的面试全流程,包括前期准备、技术考察、项目经验深挖等关键环节。特别针对自然语言处理(NLP)和机器学习(ML)领域的高频问题提供应对策略,帮助申请者提升面试表现。文章还分享了实用的准备技巧和面试经验,为有意向参加该夏令营的学生提供宝贵参考。

convnet3designer的博客 459

合成孔径雷达(SAR)的常见工作模式

随着星载SAR技术研究的深入发展,单一的条带模式已经无法满足当今时代的需求,因此许多新的工作模式相继被提出。这些新模式在分辨率和测绘宽度等方面都有所提高,接下来将简要介绍几种常用的工作模式。

m0_51390495的博客 2314

前序遍历 (preorder traversal) - 中序遍历 (inorder traversal) - 后序遍历 (postorder traversal)

前序遍历 (preorder traversal) - 中序遍历 (inorder traversal) - 后序遍历 (postorder traversal) 1. 前序遍历 (preorder traversal) - 中序遍历 (inorder traversal) - 后序遍历 (postorder traversal) 遍历的递归实现。 遍历的非递归实现 - 使用栈的非递归实现。 ...

程永强 5万+

开关电源|控制方式PWM、PFM、混合调制

频率调制器根据误差放大器的输出大小来改变方波信号的频率,若负载电流突然增加,输出电压 Vout随之下降,反馈电压 VFB 减小,此时误 差放大器的输出增高,频率调制器输出方波信号的频率增大,增加电感充电次数;若负载电流突然增加,输出电压Vom随之下降,反馈电压Vr减小,此时误差放大器的输出增高,PWM比较器输出方波信号的占空比增大,增加电感充电时间:若负载电流突然下降,PWM比较器输出方波信号的占空比减小,减少电感充电时间,从而稳定输出电压。它是在固定开关频率下,通过改变脉冲宽度来调节占空比的。

weixin_46969363的博客 1万+

二叉树的创建、前序中序后序递归遍历与非递归遍历、层序遍历以及二叉树简单应用的C语言实现

最近几天学习了二叉树这一广泛使用的数据结构,并用C语言实现了根据前序扩展序列创建二叉树,前序遍历、中序遍历、后序遍历的递归遍历和非递归遍历,层序遍历以及打印二叉树的叶子结点,求二叉树的高度,根据前序序列、中序序列建立二叉树和根据中序序列、后序序列建立二叉树等功能。程序中用到了堆栈和队列的基本操作,复习了线性表的知识。 数据类型定义和函数声明 #include #include #de

姿势水平 2098

腾讯云DBA面试(一面)

在第二阶段,根据RM返回的结果,如果涉及分布式事务的所有RM都返回可以提交, 则TM给RM发送commit的命令,每个RM实现自己的提交,同时释放锁和资源,然后RM反馈提交成功, TM完成整个分布式事务;根据事务所处的阶段,可以回滚到具体的版本,实现一致性。1.并发执行的事务,在prepare阶段,redo log先写文件缓存,第一个领头的事务,在等待n个事务后, 在第一个事务去刷写磁盘时,会把同组的其他的事务,也一起刷写到磁盘上,这样就减少了刷盘的次数,降低了磁盘的IOPS。分布式锁是怎么实现的?

u012565458的博客 1977

光伏发电预测(LSTM、CNN_LSTM和XGBoost回归模型,Python代码)

一旦结果与预测差距较大,可能存在光伏系统的问题,需要找出原因,然后采取适当措施来修复光伏系统并做出更好的决策。例如,根据准确的预测,光伏系统运营商可以平衡电力消耗,并将多余的电力储备用于紧急情况。然而,光伏系统的发电量估算是一个挑战,因为光伏系统的发电量受到天气条件的极大影响。整个项目文件夹(第一个文件夹为xgboost模型相关的包文件,xg.py是xgboost模型英文注释版本,xg_chinese.py是xgboost模型中文注释版本)表示空气的温度,通常以摄氏度(°C)或华氏度(°F)为单位。

2301_79699110的博客 3031

Java--完全二叉树、普通二叉树的创建以及树的前序、中序、后序、层序遍历的递归和非递归方法实现

在看这篇博客前,一定要对二叉树的基本概念、性质以及递归有一定的了解,否则可能会。。。。 首先在这里要复习一下二叉树的概念,由于普通的二叉树和完全二叉树的创建方法不同,所以需要掌握这两种二叉树的特点和不同。 二叉树定义: 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的二叉树组成。 二叉树的特点: 每个结点最多有两棵子树,即二叉树不存在度大于2的结点...

www_cainiao_com的博客 539

基于Simulink的双向DC-DC变换器在储能系统中的应用仿真

摘要:本文详细介绍了基于Simulink的双向DC-DC变换器在光伏储能系统中的仿真实现。主要内容包括:1)采用非隔离型双向Buck-Boost拓扑作为储能系统枢纽;2)针对750V直流微网中的20kWh锂电池接口场景进行建模;3)详细阐述双闭环控制器设计(电压外环+电流内环)、工作模式判断逻辑等关键步骤;4)通过仿真验证了系统在功率阶跃和模式切换下的性能。文章提供了完整的建模流程和控制方法,为储能系统接口设计提供了实用参考。

amy_mhd的博客 178

建立多个子结点的树 c语言,用c语言实现前序创建二叉树(递归),分别用前序,中序,后序遍历,以及分别输出节点个数和叶子节点个数...

本人c语言小白一枚,近期在学习数据结构(c语言版),特写此随笔,做一些总结和分享,如有不当之处,请各位技术大牛斧正首先我们用一个结构体来抽象树的结点,代码如下(这里我们存放的数据为char型,大家可以根据自己不同的数据来自己定义,也可以在一开始用typedf特别定义一个类型,接下来就是两个指针,用来指向左儿子和右儿子)structtnode{chardata;struct tnode *lchil...

weixin_29192211的博客 453

JavaFx 教程

JavaFx 教程

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 784

《网络摄像机实战⑦:嵌入式端AWS KVS IoT SDK 库编译与测试全流程-君正/瑞芯微/全志(超详细指南)》

本文介绍了AWS音视频和物联网解决方案的核心组件与集成方法。主要内容包括:1)Amazon Kinesis Video Streams(KVS)提供的WebRTC托管服务,支持实时音视频流传输与双向交互;2)AWS IoT云服务实现设备连接与集成;3)详细说明了KVS WebRTC库的编译过程,包括源代码下载、CMake配置和依赖库生成;4)KVS Producer库的集成方法,重点阐述了存储空间调整和mbedtls版本适配等关键修改点。文章为开发者提供了AWS音视频和物联网服务的技术实现指南,特别针对嵌入

lvj_158的专栏 109

数据结构【完整代码】之(C语言实现【二叉树】创建、递归遍历(前序、中序、后序)、非递归先序遍历)

本文包含两个文件的代码和一张测试效果图: BinaryTree.h文件: 用于存储信息:存放函数、结构体、栈的函数实现、变量名等 TreeTravel.cpp文件: 用于测试 效果图:(位于最上方) 效果图: BinaryTree.h文件: #include<stdio.h> #include<stdlib.h> #define MAX_TRUE_SIZE 100 #define OK 1 #define ERROR 0 typedef int Status; typede

Zhou_LC的博客 1671

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

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

二叉树的递归创建及遍历【前序、中序、后序】(C++实现)

存储实现: 采用二叉链表实现,每个结点有一个数据域、一个指向左孩子的指针、一个指向右孩子的指针。 lchild root rchild 以下是我踩(nao)过(can)的(shun)雷(jian) 1.定义了root(结点),但是没有分配内存空间 2.建议不要在创建二叉树的函数里设置形参,没有必要传来传去。 原因:①浪...

JM13679173275的博客 756

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

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java层次创建二叉树,前序、中序、后序、层序遍历二叉树的非递归实现,获得二叉树的高度

1. 二叉树节点 package entity; public class TreeNode { //数据域 public int val; //左孩子 public TreeNode left; //右孩子 public TreeNode right; //构造函数1 public TreeNode(int val) { this.val = val; } //构造函数2 public TreeN

shuaichengpku的博客 944

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

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

创建一颗二叉树(如利用扩展二叉树的前序遍历序列,生成二叉树, 并给出析构函数),实现二叉树的前序,中序,后序,层序的递归遍历操作。

创建一颗二叉树(如利用扩展二叉树的前序遍历序列,生成二叉树, 并给出析构函数),实现二叉树的前序,中序,后序,层序的递归遍历操作。

hehhxbd的博客 767

二叉树的创建与遍历

二叉树有多种不同的遍历方法,比如先序遍历(preorder traversal)、中序遍历(inorder traversal)和后序遍历(postorder traversal)。例如,先序遍历通常用于复制一棵二叉树,中序遍历通常用于排序,后序遍历通常用于计算一棵二叉树的高度。

kashine的博客 6553

按照前序遍历创建二叉树及树的四种遍历方式

利用前序遍历创建二叉树以及树的四种遍历方式

qq_66506742的博客 9787

二叉树的先序,中序,后序遍历的实现

先序遍历 若二叉树为空,则空操作;否则 1.访问根节点 2.先序遍历左子树 3.先序遍历右子树 中序遍历 若二叉树为空,则空操作;否则 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序遍历 若二叉树为空,则空操作;否则 1.后续遍历左子树 2.后续遍历右子树 3.访问根节点 用递归的方式实现二叉树的遍历: #include <bits/stdc++.h> using namespace std; typedef char TElemType; typedef int Status;

qq_43811879的博客 1173

【数据结构初阶】新学期带你领跑二叉树,二叉树的迭代遍历,递归遍历详解,建议收藏

二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个结点最多只能有两棵子树,且有左右之分 。

jhao的博客 1531

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

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

Renswc的博客 3439

c语言创建一个根结点,用c语言实现前序创建二叉树(递归),分别用前序,中序,后序遍历,以及分别输出节点个数和叶子节点个数...

本人c语言小白一枚,近期在学习数据结构(c语言版),特写此随笔,做一些总结和分享,如有不当之处,请各位技术大牛指点首先我们用一个结构体来抽象树的结点,代码如下(这里我们存放的数据为char型,大家可以根据自己不同的数据来自己定义,也可以在一开始用typedef特别定义一个类型,接下来就是两个指针,用来指向左儿子和右儿子)structtnode{chardata;struct tnode *lchi...

weixin_39647734的博客 792
上一篇: 字符串移位包含的问题
下一篇: 链栈的基本操作实现
Scandinavians
博客等级 码龄19年 36粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值