数据结构课程设计二叉树的应用
数据结构二叉树应用课程设计含源代码实现
递归法的先序遍历:按照输出根、输出左孩子、输出右孩子的顺
序来递归的调用先序遍历函数。
递归法的中序遍历:输出左孩子、按照输出根、输出右孩子的顺
2 / 17
序来递归的调用中序遍历函数。 递归法的后序遍历:输出左孩子、输出右孩子、按照输出根的顺
序来递归的调用后序遍历函数。 二叉树的先序、中序、后序遍历的非递归方法是要借助数据结构
层序遍历。求二叉树的高度、宽度,结点数。判断是否为二叉排序树。
[ห้องสมุดไป่ตู้本要求]
(1) 从文件中读入建树信息,树的节点数目不小于 20 个,树的高
度不小于 4。
(2) 采用二叉链表结构。
(3) 至少 2 组输入数据,分别是二叉排序树和不是二叉排序树。
3.2 数据结构
***********************************************************
typedef struct
{
SElemType *base; //栈底指针
SElemType *top;
//栈顶指针
int stacksize;
//栈的容量
}SqStack;
//栈
3.3 算法设计思想
首先从文件中读取二叉树,按照先序遍历的顺序递归建树,先建
立它的左子树,再建立它的右子树,最后递归结束,整棵树构建成功!
cout<<"文件打开失败!请重试!"<<endl; exit(0); } ReadFile>>sum; while(sum--) { cout<<"case:"<<++case1<<endl; CreatBiTree(Head, ReadFile);
数据结构课程设计(二叉排序树:用顺序表结构存储)报告
教师签字
日期:2013-1-5
4.在删除函数中,最重要的是建立了一个新的数组,并且初始化了该数组,然后将不需要删除的节点保存到该数组中,当删除了指定的数据后,最后返回该数组,并且在对其进行中序遍历,输出。
最后的效果:
输入数据,提示选项,“0”代表退出该程序,“1”代表对给定的数组数据进行中序遍历,“2”代表对给定数据计算平均查找长度,“3”代表删除数据中的节点,并且在中序遍历后输出剩余的数据。
课程设计成绩表
班级:
XXXXX学号:XXX姓名:XXXX
课题名称:
数据结构课程设计(二叉排序树:用顺序表结构存储)
主要工作描述(包括系统实现的主要功能、使用的关键数据结构及算法思想描述、最后的效果):
主要功能:
手动输入一串数字,用“0”代表输入完成,然后通过代码,对这一串数据进行中序遍历,并且输出;其次,可以对该数列进行计算平均查找长度;最后是可以删除该数列中的节点,并且再通过中序遍历后,输出。
使用的关键数据结构及算法思想:
1.运用到了完全搜索二叉树,通过数组的数据,边查找边插入来建立二叉排序树,并且记录结点个数;
2.还运用了中序遍历,通过左子树,根节点,右子树的顺序输出节点;
3.在计算平均查找长度的时候,记录当前结点的在当前树中的深度,再记录已遍历过的点的深度之和,从而得以计算出平均查找长度;
数据结构课程设计-线索二叉树的应用
数据结构课程设计报告(2010 / 2011 学年第二学期)题目:线索二叉树的应用专业班级: 09计算机(2)班学生姓名:学号:指导教师:设计周数:19、20周设计成绩:2011 年7 月 4 日一、需求分析:1、题目:线索二叉树的应用2、目的和任务:《数据结构》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。
其目的就是要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。
其任务为:要求:实现线索树建立、插入、删除、恢复线索的实现。
3、数据输入输出:原始数据要求输入二叉树的7个结点:1234567,输出的是一个二叉树,这就实现了二叉树的建立过程。
然后对二叉树进行线索化。
对其进行插入:在7结点处插入结点8;删除:删除结点8;恢复线索等功能。
进行二叉树的初始化,依次输入,以*结束:1234567*线索二叉树的应用****************************1、进行二叉树线索化2、进行插入操作3、删除4、中序输出5、线索输出0、退出请选择:1已经实现二叉树的线索化,可选择5查看线索4、设计算法测试用例:(1)输入结点:1234567;(2)对输入的二叉树进行线索化;(3)查看二叉树的中序线索输出:4->2->5->1->6->3->7;(4)在7结点处插入结点8,此时完成线索化恢复,查看二叉树的中序线索输出:4->2->5->1->6->3->8->7;(5)删除结点8,此时完成线索化恢复,发现结点8,ltag=1,rtag=1,查看二叉树的中序线索输出:4->2->5->1->6->3->7;(6)继续删除结点r,发现无该结点,则输入错误。
数据结构实验指导书 二叉树两种存储结构的应用
一、实验名称:二叉树两种存储结构的应用二、实验目的和要求:1.掌握二叉树的遍历思想及二叉树的存储实现。
2.掌握二叉树的基本操作:建立二叉树、二叉树的遍历3.选择一种形式完成二叉树的显示4.掌握二叉树的常见算法的程序实现5.实验报告中要写出测试数据、错误分析以及收获三、上机实验内容一:二叉树的建立及相关算法的实现1.完成的功能包括如下几点:①编程实现建立一棵二叉树,然后对其进行先序、中序和后序遍历。
分析:将要输入的二叉树按照其对应的完全二叉树的顺序输入,若当前位置不存在结点则输入@②显示二叉树③求二叉树的高度及二叉树的叶子个数等等④在主函数中设计一个简单的菜单,分别调试上述算法四、上机实验内容二:哈夫曼编码/译码系统1.要求编写一程序模拟传输过程,实现在发送前将要发送的字符信息进行编码,然后进行发送,接收后将传来的数据进行译码,即将信息还原成发送前的字符信息。
2.设计分析在本例中的算法主要有:哈夫曼树的建立;哈夫曼编码的生成;对编码信息的翻译。
要求设置发送者和接收者两个功能。
发送者的功能包括:①输入待传送的字符信息;②统计字符信息中出现的字符类数和各字符出现的次数(频率);③根据字符的种类数和各字符出现的次数建立哈夫曼树;④利用以上哈夫曼树求出各字符的哈夫曼编码;⑤将字符信息转换成对应的编码信息进行传送。
接收者的功能包括:①接收发送者传送来的编码信息;②利用上述哈夫曼树对编码进行翻译,即将编码信息还原成发送前的字符信息。
3.结点的类型定义①哈夫曼树的存储结构类型定义为:typedef struct{char data; /*编码对应的字符*/int weight; /*结点的权值*/int lchild,rchild,parent;/*左右孩子及双亲的下标*/}HTNode;②哈夫曼编码的存储结构类型定义为:typedef struct{char bits[N]; /*存放哈夫曼编码的字符数组*/int start; /*记录编码的起始位置,因为每种字符的编码长度不同*/}HCode;说明:只占用2个课内学时,学生可利用开放实验室利用课余时间完成本次实验内容。
数据结构 二叉树的基本操作实现及其应用
实验三二叉树的基本操作实现及其应用一、实验目的1.熟悉二叉树结点的结构和对二叉树的基本操作。
2.掌握对二叉树每一种操作的具体实现。
3.学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法。
4.会用二叉树解决简单的实际问题。
二、实验内容题目一设计程序实现二叉树结点的类型定义和对二叉树的基本操作。
该程序包括二叉树结构类型以及每一种操作的具体的函数定义和主函数。
1 按先序次序建立一个二叉树,2按(A:先序 B:中序 C:后序)遍历输出二叉树的所有结点以上比做,以下选做3求二叉树中所有结点数4求二叉树的深度**************************************************************** /* 定义DataType为char类型 */typedef char DataType;/* 二叉树的结点类型 */typedef struct BitNode{ DataType data;struct BitNode *lchild,*rchild;}*BitTree;相关函数声明:1、/* 初始化二叉树,即把树根指针置空 */void BinTreeInit(BitTree *BT)2、/* 按先序次序建立一个二叉树*/void BinTreeCreat(BitTree *BT)3、/* 检查二叉树是否为空 */int BinTreeEmpty(BitTree *BT)4、/*按任一种遍历次序(包括按先序、中序、后序、按层次)输出二叉树中的所有结点 */void BinTraverse(BitTree *BT)5、/* 求二叉树的深度 */int BinTreeDepth(BitTree BT)6、/* 求二叉树中所有结点数 */int BinTreeCount(BitTree BT)题目二、The Number of the Same BST【Description】Many people knows binary search tree. The keys in a binary search tree are always stored in such a way as to satisfy the BST property:Let X be a node in a binary search tree. If Y is a node in the left subtree of X , then Y<= X. If Y is a node in the right subtree of X , then Y > X.For example,It is a binary search tree. And it can be built by inserting the elements of vector A= (12, 6, 3, 18, 20, 10, 4, 17, 20) sequentially. But it can also be built by the vector B= (12, 18, 17, 6, 20, 3, 10, 4, 20).Now given a vector X, then you may get a binary search tree from X. Your job is to calculate how many different vectors can build the same binary search tree. To make it easy, you should just output the number of different vectors mod 9901.【Input】Input consists of several cases. Each case starts with a line containing one positive integer n, which is the length of test vector. The integer n is less than 20. Following this there will be n positive integers, which are less then 1000, on the next line. The input will end with a case starting with n = 0. This case should not be processed.【Output】For each test case, print a line with a single integer, which is the number of different vectors mod 9901.【Sample Input】32 1 395 6 3 18 20 10 4 17 20【Sample output】2168三、实验步骤㈠、数据结构与核心算法的设计描述㈡、函数调用及主函数设计(可用函数的调用关系图说明)㈢程序调试及运行结果分析㈣实验总结四、主要算法流程图及程序清单1、主要算法流程图:2、程序清单(程序过长,可附主要部分)。
数据结构课程设计二 叉 树 遍 历 及 应 用
实验报告课程:数据结构课程设计设计题目:二叉树遍历及应用学号:班级:软件11k1姓名: 南方小羊指导教师:刘军二叉树的遍历1、问题描述利用先序遍历建立一棵二叉树,并分别用前序、中序、后序遍历该二叉树2、节点形式Lchild data Rchild3、说明(1)输入数据:1,2,3,0,0,4,0,0,5,0,0其中“0”表示空子树。
(2)输出数据:先序:1,2,3,4,5中序:3,2,4,1,5后序:3,4,2,5,1二叉树的应用1、问题描述运用二叉树的遍历的算法,编写算法分别实现如下功能。
(1)求出二叉树中的结点的总数。
(2)求出二叉树中的叶子数目。
(3)求出二叉树的深度。
运用上题所建立的二叉树,求出其结点总数、叶子数目、深度,最后释放所有结点。
二叉树结点结构中包数据域(data),指针域(*lchild,*rchild)。
结点结构的代码如下:typedef struct tree{int data;struct tree *lchild,*rchild;}*bitree;本实例使用的是二叉树,首先建立头结点,并且保存数据,然后根据递归方法,分别建立其左右孩子结点,且左右孩子结点的指针域指向空。
先序递归遍历时,输出第一个根结点数据,然后分别遍历左子树再遍历右子树,中序遍历,先访问根结点的左子树输出数据,再输出根结点的数据,再访问右子树,后序遍历先访问根结点的右子树,再访问根结点,再访问左子树输出。
统计二叉树叶子的个数可以看成一个遍历问题,访问一个结点,判断该结点是否为叶子,如果是将叶子树加1,可以采用任何遍历实现,求二叉树的深度是假设根结点为第一层的结点,所有K层结点的左右孩子在K+1层,所以可以通过先序遍历计算二叉树中每个结点的层数,其中最大的就是二叉树的深度。
四、实验心得:树结构是数据结构课程的典型内容,而且综合使用了多种逻辑结构,具有代表性,可以锻炼个人编程能力。
在刚开始选题后,我感觉无从下手,一是因为没有实践经验,二是因为对数据结构课程的内容没有把握到位,然后在参考一些专业书籍并且学习了之前其他人的课程设计,才逐渐可以上手去自己做。
数据结构实验报告—二叉树
数据结构实验报告—二叉树数据结构实验报告—二叉树引言二叉树是一种常用的数据结构,它由节点和边构成,每个节点最多有两个子节点。
在本次实验中,我们将对二叉树的基本结构和基本操作进行实现和测试,并深入了解它的特性和应用。
实验目的1. 掌握二叉树的基本概念和特性2. 熟练掌握二叉树的基本操作,包括创建、遍历和查找等3. 了解二叉树在实际应用中的使用场景实验内容1. 二叉树的定义和存储结构:我们将首先学习二叉树的定义,并实现二叉树的存储结构,包括节点的定义和节点指针的表示方法。
2. 二叉树的创建和初始化:我们将实现二叉树的创建和初始化操作,以便后续操作和测试使用。
3. 二叉树的遍历:我们将实现二叉树的前序、中序和后序遍历算法,并测试其正确性和效率。
4. 二叉树的查找:我们将实现二叉树的查找操作,包括查找节点和查找最大值、最小值等。
5. 二叉树的应用:我们将探讨二叉树在实际应用中的使用场景,如哈夫曼编码、二叉搜索树等。
二叉树的定义和存储结构二叉树是一种特殊的树形结构,它的每个节点最多有两个子节点。
节点被表示为一个由数据和指向其左右子节点的指针组成的结构。
二叉树可以分为三类:满二叉树、完全二叉树和非完全二叉树。
二叉树可以用链式存储结构或顺序存储结构表示。
- 链式存储结构:采用节点定义和指针表示法,通过将节点起来形成一个树状结构来表示二叉树。
- 顺序存储结构:采用数组存储节点信息,通过计算节点在数组中的位置来进行访问和操作。
二叉树的创建和初始化二叉树的创建和初始化是二叉树操作中的基础部分。
我们可以通过手动输入或读取外部文件中的数据来创建二叉树。
对于链式存储结构,我们需要自定义节点和指针,并通过节点的方式来构建二叉树。
对于顺序存储结构,我们需要定义数组和索引,通过索引计算来定位节点的位置。
一般来说,初始化一个二叉树可以使用以下步骤:1. 创建树根节点,并赋初值。
2. 创建子节点,并到父节点。
3. 重复步骤2,直到创建完整个二叉树。
数据结构第六章二叉树的应用教案
6.3 哈夫曼树
• • 最优树的定义 如何构造最优树
6.3.1 基本术语
路径和路径长度
若在一棵树中存在着一个结点序列 k1,k2,…,kj,使得ki是ki+1的 双亲(1≤i<j),则称此结点序列是 从k1到kj的路径从k1到kj所经过的 分支数称为这两点之间的路径长度
结点的权和带权路径长度
权 给结点赋上一个有某种意义 的实数,我们称为权。 带权路径长度 从根结点到该结点之间路径 长度与该结点上权的乘积。
23 设 key = 48
T
20 10 T 23 T 25
T T
30
T
40 35 T
bool Find(BTreeNode* T, ElemType& item) if(T==NULL) return false; //查找失败 else { if(item==T->data) { item=T->data; return true; } else if(item<T->data) //向左子树继续查找 return Find(T->left, item); else return Find(T->right, item); } //向右子树继续查找
ri r2i ri r2i 1
(小顶堆)
或
ri r2i ri r2i 1
(大顶堆)
12, 36, 27, 65, 40, 34, 98, 81, 73, 55, 49
是小顶堆
12, 36, 27, 65, 40, 14, 98, 81, 73, 55, 49
不是堆
子树上查找;
3)大于根结点的关键字,则继续在右
子树上查找。
数据结构-二叉树的遍历及应用
实验报告课程名称:数据结构与算法课程类型:必修实验项目:树型结构及应用实验题目:二叉树的遍历及应用一、实验目的1.通过对二叉树的各种操作更好理解树型结构及其应用;2.了解各种二叉树的遍历算法;3.理解递归和非递归的差别。
二、实验要求及实验环境实验要求:1.编写建立二叉树(大于10个结点) 的二叉链表存储结构(左右链表示)的程序,并以适当的形式显示和保存二叉树;2.采用二叉树的二叉链表存储结构,编写程序实现二叉树的先序、中序和后序遍历的递归和非递归算法以及层序遍历算法,并以适当的形式显示和保存二叉树及其相应的遍历序列;3.给定一个二叉树,编写算法完成下列应用:(1)判断其是否为完全二叉树;(2)求二叉树中任意两个结点的公共祖先。
实验环境:codeblocks/Dev-C++三、设计思想(本程序中的用到的所有数据抽象数据性ADT的定义,主程序的流程图及各程序模块之间的调用关系)1. 所用的抽象数据性ADT的定义1)逻辑结构:栈:是一种特殊形式的线性表,所有的插入和删除操作都在栈顶。
栈的置空操作:void makenull(stack* s)判断栈是否为空:int empty(stack* s)返回栈顶元素:btree* top(stack* s)入栈操作:void push(btree* x, stack* s)出栈操作:void pop(stack* s)队列:是一种特殊形式的线性表,队尾入队,队首出队。
将队列置空:void makenull_q(queue* duilie)在队列后面插入T:void enqueue_q(btree* T, queue* duilie)判断队列是否为空:int empty_q(queue* duilie)返回队列的第一个元素:btree* front_q(queue* duilie)删除队列的第一个元素:void dequeue_q(queue* duilie)2) 存储结构定义了一个字符栈stack,一个队列queue,一个队列里面的节点node2,一个广义表数组char widechart[100],一个存储树节点数据的数组char store_ancestors[100]。
数据结构课程设计报告_遍历二叉树
数据结构课程设计报告_遍历⼆叉树XXXX⼤学《数据结构》课程设计报告课题名称: 遍历⼆叉树系(院):专业:班级:组员姓名:学号:指导教师:开课时间: 学年学期摘要树结构在客观世界中⼴泛存在, 如⼈类社会的族谱和各种社会组织机构都可⽤树形象表⽰. 树在计算机领域中也得到⼴泛应⽤,如在编译源程序时, 可⽤树表⽰源程序的语法结构. ⼜如在数据库系统中, 树型结构也是信息的重要组织形式之⼀. ⼀切具有层次关系的问题都可⽤树来描述.针对这样的问题, 我选择了⼆叉树的遍历作为我的课程设计主题, 编写程序, 实现对⼆叉树的遍历. 在本次课程设计中, ⼆叉树的建⽴使⽤了递归算法;在前序、中序和后续遍历的算法中则同时使⽤了递归与⾮递归的算法, 即在这些遍历算法的实现中使⽤了栈结构与队列结构, 提供了6种不同的遍历⽅式, 供使⽤者选择. 同时, 该程序具有输出层序遍历的功能, 层序遍历模块使⽤了⾮递归算法. 该程序基本实现了对⼆叉树的遍历, 对于递归与⾮递归算法, 我们应从实际应⽤中体验这些算法的优越性.关键词: 层次关系, ⼆叉树建⽴, 递归与⾮递归, 遍历, 栈, 队列⽬录⼀、问题描述 (1)⼆、需求分析 (1)2.1主功能模块 (1)2.2创建树模块 (1)2.3遍历树模块 (1)三、概要设计 (2)3.1主界⾯设计思想流程图 (2)3.2. 创建⼆叉树 (2)3.2.1⼆叉树创建的思想 (2)3.2.2⼆叉树创建的算法流程图 (2)3.3.先序递归遍历 (3)3.3.1先序递归遍历思想 (3)3.3.2先序递归遍历的算法流程图 (3)3.4.中序递归遍历 (3)3.4.1中序递归遍历思想 (3)3.4.2中序递归遍历的算法流程图 (4) 3.5.后序递归遍历 (4)3.5.1后序递归遍历思想 (4)3.5.2后序递归遍历的算法流程图 (5) 3.6.先序⾮递归遍历 (5)3.6.1先序⾮递归遍历思想 (5)3.6.2先序⾮递归遍历的算法流程图 (6) 3.7.中序⾮递归遍历 (6)3.7.1中序⾮递归遍历思想 (6)3.7.2中序⾮递归遍历的算法流程图 (7) 3.8.后序⾮递归遍历 (7)3.8.1后序⾮递归遍历思想 (7)3.8.2后序⾮递归遍历的算法流程图 (8) 3.9.层序⾮递归遍历 (8)3.9.1层序⾮递归遍历思想 (8)3.9.2层序⾮递归遍历的算法流程图 (9)四、详细设计 (10)4.1界⾯设计 (10)4.2.详细代码分析 (11)4.2.1主模块 (11)4.2.2创建树模块 (12)4.2.3遍历树模块 (13)五、调试分析 (13)5.1.调试结果 (13)5.1.1实验数据 (13)5.1.2创建树界⾯ (14)5.1.3输出结果界⾯ (14)5.2.算法分析 (16)5.2.1时间复杂度 (16)5.2.2空间复杂度 (16)5.3.程序的不⾜ (16)5.3.1程序不⾜之处 (16)六、⼼得体会 (17)七、参考⽂献 (17)⼀、问题描述建⽴⼆叉树, 层序、先序、中序、后序遍历.(⽤递归或⾮递归的⽅法都可以)要求能够输⼊树的各个结点, 并能够输出⽤不同⽅法遍历的遍历序列;分别建⽴⼆叉树存储结构的的输⼊函数、输出层序遍历序列的函数、输出先序遍历序列的函数、输出中序遍历序列的函数、输出后序遍历序列的函数.⼆、需求分析在现实世界层次化的数据模型中, 数据与数据之间的关系纷繁复杂. 其中很多关系⽆法使⽤简单的线性结构表⽰清楚, ⽐如祖先与后代的关系、整体与部分的关系等. 于是⼈们借鉴⾃然界中树的形象创造了⼀种强⼤的⾮线性结构——树. 树形结构的具体形式有很多种, 其中最常⽤的就是⼆叉树. ⽽⼆叉树的多层次遍历遍历则是⼆叉树的重要内容.本程序⽤Microsoft Visual C++ 6.0编写, 可以实现对⼆叉树的创建、采⽤递归和⾮递归等两种⽅式先序、中序、后序进⾏遍历.2.1主功能模块通过合理的界⾯设计, 根据提⽰信息, 使⽤者可以⽅便快捷地运⾏本程序来完成创建、遍历⼆叉树等操作. 界⾯美观, ⼈性化, 程序智能, 安全性⾼.2.2创建树模块当进⼊程序运⾏界⾯后, 根据提⽰输⼊需要建⽴的⼆叉树, 按照先序次序输⼊各个结点的值, 完成⼆叉树的建⽴.2.3遍历树模块实现对该⼆叉树的先序递归遍历、先序⾮递归遍历、中序递归遍历、中序⾮递归遍历、后序递归遍历、后序⾮递归遍历、层序⾮递归遍历等⽅式的遍历操作, 并输出各遍历序列.三、概要设计3.1主界⾯设计思想流程图3.2. 创建⼆叉树3.2.1⼆叉树创建的思想(1)定义⼆叉树结点值的类型为字符型.(2)结点个数不超过10个.(3)按先序次序输⼊, 构造⼆叉链表表⽰的⼆叉树T, 空格表⽰空树. 相关函数如下:void CreateBiTree(BiTree &T)3.2.2⼆叉树创建的算法流程图3.3.先序递归遍历3.3.1先序递归遍历思想若⼆叉树为空, 则空操作;否则(1)访问根结点;(2)先序遍历左⼦树;(3)先序遍历右⼦树. 相关函数如下: void PreOrderTraverse(BiTree T) 3.3.2先序递归遍历的算法流程图3.4.中序递归遍历3.4.1中序递归遍历思想若⼆叉树为空, 则空操作;否则(1)中序遍历左⼦树;(2)访问根结点;(3)中序遍历右⼦树. 相关函数如下: void InOrderTraverse(BiTree T) 3.4.2中序递归遍历的算法流程图3.5.后序递归遍历3.5.1后序递归遍历思想若⼆叉树为空, 则空操作;否则(1)后序遍历左⼦树;(2)后序遍历右⼦树;(3)访问根结点. 相关函数如下: void PostOrderTraverse(BiTree T)3.6.先序⾮递归遍历3.6.1先序⾮递归遍历思想(1)访问结点的数据域;(2)指针指向p的左孩⼦结点;(3)从栈中弹出栈顶元素;(4)指针指向p的右孩⼦结点. 相关函数如下: void NRPreOrder(BiTree bt)3.7.中序⾮递归遍历3.7.1中序⾮递归遍历思想(1)指针指向p的左孩⼦结点;(2)从栈中弹出栈顶元素;(3)访问结点的数据域;(4)指针指向p的右孩⼦结点. 相关函数如下: void NRInOrder(BiTree bt)3.7.2中序⾮递归遍历的算法流程图3.8.后序⾮递归遍历3.8.1后序⾮递归遍历思想若⼆叉树为空, 则空操作;否则引⼊栈和标记模拟递归⼯作栈, 初始时栈为空. 相关函数如下: void NRPostOrder(BiTree bt);3.8.2后序⾮递归遍历的算法流程图3.9.层序⾮递归遍历3.9.1层序⾮递归遍历思想(1)访问该元素所指结点.(2)若该元素所指结点的左右孩⼦结点⾮空, 则该元素所指结点的左孩⼦指针和右孩⼦指针顺序⼊队. 相关函数如下: void LevelOrderTraverse(BiTree T)3.9.2层序⾮递归遍历的算法流程图四、详细设计4.1界⾯设计图4-1 系统运⾏主界⾯图4-2 创建⼆叉树界⾯图4-3 ⼆叉树递归遍历界⾯4.2.详细代码分析4.2.1主模块本模块定义了系统运⾏主界⾯的相关内容和相关操作函数, 源代码如下: void main(){BiTree T;T=NULL;int select;//cout<<"请按先序次序输⼊各结点的值, 以空格表⽰空树(输⼊时可连续输⼊):"< while(1){cout<<"\n\n请选择要执⾏的操作:\n";cout<<"1.创建⼆叉树\n";cout<<"2.⼆叉树的递归遍历算法(前、中、后)\n";cout<<"3.⼆叉树的层次遍历算法\n";cout<<"4.⼆叉树的⾮递归遍历算法(前、中、后)\n";cout<<"0.退出\n";cin>>select;switch(select){case 0:return;case 1:cout<<"请按先序次序输⼊各结点的值, 以空格表⽰空树(输⼊时可连续输⼊):"< CreateBiTree(T);break;case 2:if(!T) cout<<"未建⽴树, 请先建树!";else{cout<<"\n先序遍历:\n";PreOrderTraverse(T);cout<<"\n中序遍历:\n";InOrderTraverse(T);cout<<"\n后序遍历:\n";PostOrderTraverse(T);}break;case 3:cout<<"\n层序遍历:\n";LevelOrderTraverse(T);break;case 4:if(!T) cout<<"未建⽴树, 请先建树!";else{cout<<"\n先序遍历:\n";NRPreOrder(T);cout<<"\n中序遍历:\n";NRInOrder(T);cout<<"\n后序遍历:\n";NRPostOrder(T);}break;default:cout<<"请确认选择项:\n";}//end switch}//end while}4.2.2创建树模块源代码如下:void CreateBiTree(BiTree &T){//按先序次序输⼊, 构造⼆叉链表表⽰的⼆叉树T, 空格表⽰空树// if(T) return;char ch;ch=getchar(); //不能⽤cin来输⼊, 在cin中不能识别空格.if(ch==' ') T=NULL;else{if(!(T=(BTNode *)malloc(sizeof(BTNode)))) cout<<"malloc fail!";T->data=ch;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}}4.2.3遍历树模块本模块包括了各种遍历⼆叉树的函数, 源代码如下:void PreOrderTraverse(BiTree T) //⼆叉树的先序遍历(递归)成员函数声明void InOrderTraverse(BiTree T) //⼆叉树的中序遍历(递归)成员函数声明void PostOrderTraverse(BiTree T) //⼆叉树的后序遍历(递归)成员函数声明void LevelOrderTraverse(BiTree T) // ⼆叉树的层序遍历(⾮递归)成员函数声明void NRPreOrder(BiTree bt) // ⼆叉树的先序遍历(⾮递归)成员函数声明void NRInOrder(BiTree bt) //⼆叉树的中序遍历(⾮递归)成员函数声明void NRPostOrder(BiTree bt) //⼆叉树的后序遍历(⾮递归)成员函数声明五、调试分析5.1.调试结果5.1.1实验数据这棵树是随机画的, 由数据结构知识, 按照先序次序输⼊各个节点的值为: ABD###CEG###F#H##(此处#代表空格). 在程序中输⼊这些节点, 创建树, 如下图:5.1.2创建树界⾯图5-1 创建树界⾯5.1.3输出结果界⾯输⼊2, 输出该⼆叉树递归遍历算法的遍历结果, 结果如下:输⼊3, 输出该⼆叉树层序遍历算法的遍历结果, 结果如下:输⼊4, 输出该⼆叉树⾮递归遍历算法的遍历结果, 结果如下:。
数据结构课设——二叉树应用
if(!T)
return 0;
else
{
m = BiTree_Height(T->lc);
n = BiTree_Height(T->rc);
return (m > n ? m:n)+1;
}
}
int BiTree_lush(BiTree T)//测量树的繁茂度
BiTNode *p;
InitStack(s);
Push(s,T);
T->mark=0;
while(!StackEmpty(s))
{
Pop(s,p);
switch(p->mark)
{
/*2、二叉树的应用 (必做)
任务 :编程实现二叉树的建立,先序、中序、后序、层序遍历(递归和非递归方法),
二叉树的高度、繁茂度,交换左右子树,统计叶子节点的数目,判断是否为完全二叉树,
按树的形态在屏幕上打印输出;
要求:从文件中读入建树信息,树的节点数目不小于20个,树的高度不小于4;
*/
struct BiTNode *lc,*rc;
}BiTNode,*BiTree;
///////////////////////////
//队列(尾为空)
typedef struct QNode
{
BiTree data;
QNode *next;
}QNode;
printf("%c",p->data);
Push(s,p->lc);
GetTop(s,p);
} //向左走到尽头
排序二叉树的应用-数据结构课程设计报告
数据结构课程设计报告题目: 排序二叉树的应用一、设计任务1、程序在运行时,可以执行有关排序二叉树的操作:如插入一个元素、删除一个元素、查找一个元素、打印一个元素等。
2、用递归算法遍历二叉树。
二、设计分析1 、二叉树是n〔n>=0〕个结点的有限集合,它或为空树〔n=0〕,或由一个根结点和两棵分别称为根的左子树和右子树的互不相交的二叉树组成。
二叉树是一个递归定义。
一棵深度为k且有2k-1个结点的二叉树称为满二叉树。
对满二叉树的结点进行连续编号,约定编号从根结点起,自上而下,自左而右。
2 、二叉树的存储结构1〕顺序存储结构:二叉树可以采用顺序存贮结构,即用一维数组来存放二叉树的数据元素。
它是按照满二叉树的结点层次编号层次来依次存放二叉树中的数据元素。
2〕链式存储结构:设计不同的结点结构可构成不同形式的链式存储在本程序中,采用顺序存储结构,对二叉树进行插人、删除、查找、遍历等操作。
3 、二叉树的建立已知一棵二叉树,共有n个结点,建立的方法如下:1)照完全二叉树的编号方法,对该二叉树进行编号。
2)次输入一个结点的值x和该结点的编号k,动态申请一块空间来存放该结点,空间的地址为p。
3)把p值赋给adr[k]中。
4)如果k=1,转到5;否则,把p的值填入其父结点的指针域中。
p 的父结点地址为adr[k/2],假设k为偶数,则做adr[k/2]->lc=p;假设为奇数,则做adr[k/2]->rc=p。
5)重复2~4,直到全部顶点数据输入完为止。
4 、遍历二叉树,即如何按某条搜索路径寻访树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。
一棵非空二叉树是由根结点〔D〕、左子树〔L〕和右子树〔R〕三个基本部分组成。
要遍历这三个基本部分,可以有六种可能的顺序。
假设限定先左后右,则只有三种情况:先序遍历〔DLR〕、中序遍历〔LDR〕、后序遍历〔LRD〕。
在本程序中,遍历二叉树函数的核心是以一个简单的case语句来实现5 、二叉树的插入操作:这个操作首先生成一个新的结点结构,把数据存入新结点,然后搜索二叉树寻找插入结点的位置,再把新结点连接到二叉树。
二叉排序树及其应用(算法与数据课程设计)
二叉排序树及其应用一、问题描述二叉排序树又称二叉查找树,是一种动态的树表,在现实中有着广泛的应用。
选择合适的存储结构,建立二叉排序树,完成插入、删除等基本操作。
并在此基础上,将二叉排序树应用于通讯录的管理。
二、基本要求1. 选择合适的存储结构实现二叉排序树的建立。
2. 完成二叉排序树的遍历、搜索、插入、删除等操作。
3. 编写应用程序,运用二叉排序树实现通讯录管理。
三、测试数据1、二叉排序树建立二叉排序树:“49 38 76 97 13 27 55”在建立树中搜索:15和13在建立树中插入:5在建立树中删除:272、通讯录的测试数据"小雨",1314520"老赵",3344520"一辛",1314025"华仔",3344025"落落",1234567"小钰",3142267"瑞",4384383"大黄",7654321。
在上表的基础上完成二叉排序树的建立、插入、删除。
四、算法思想1、二叉排序树的查找,即给定值先与根结点比较,若相等则查找成功,否则根据根据他们之间的大小关系,分别在左子树或右子树查找。
2、二叉排序树的插入,插入的一定是叶子结点,根据查找结果决定插入位置。
3、二叉排序树的删除分三种情况:1)若*p结点为叶子结点,即P L和P R均为空树。
由于删除叶子结点不破坏整棵树的结构,则只需改其双亲结点的指针即可。
2)若*p结点只有左子树P L或者只有右子树P R,此时只要令P L或P R直接成为其双亲结点*f的左子树即可。
3)若*p的左右子树均不空。
令*p的左子树为*s的左子树,*p的右子树为*s的右子树,如图。
4、在通讯录管理系统的设计中都基于上述二叉排序树的思想。
五、模块化分1.二叉排序树1).Search(p,data)查找二叉排序树中元素。
二叉排序书课程设计
二叉排序书课程设计一、课程目标知识目标:1. 让学生理解二叉排序树的概念、性质和基本操作,掌握二叉排序树的插入、删除和查找过程。
2. 使学生能够运用二叉排序树解决实际问题,如数据排序和查找。
技能目标:1. 培养学生运用二叉排序树进行数据组织和分析的能力。
2. 培养学生编写和调试二叉排序树相关程序的能力。
情感态度价值观目标:1. 培养学生对数据结构和算法的兴趣,激发学生学习主动性和积极性。
2. 培养学生勇于克服困难、独立解决问题的精神,增强团队合作意识。
3. 培养学生认识到二叉排序树在实际应用中的价值,提高对计算机科学的认识。
课程性质:本课程为计算机科学领域的数据结构与算法课程,以二叉排序树为主题,结合实际案例,使学生掌握二叉排序树的相关知识。
学生特点:学生已具备一定的编程基础和逻辑思维能力,但对二叉排序树的概念和操作尚不熟悉。
教学要求:1. 通过讲解、示例和练习,使学生掌握二叉排序树的基本原理和操作。
2. 注重理论与实践相结合,提高学生解决实际问题的能力。
3. 鼓励学生主动思考、提问,培养良好的学习习惯。
4. 强化编程实践,提高学生的编程技能和逻辑思维能力。
二、教学内容1. 引言:介绍二叉排序树的基本概念,及其在数据结构和算法中的应用。
- 相关章节:课本第X章“二叉树与二叉排序树”2. 二叉排序树的性质与定义:- 内容:二叉排序树的定义、性质、特点- 相关章节:课本第X章“二叉排序树的性质与定义”3. 二叉排序树的插入操作:- 内容:插入过程、算法实现、示例演示- 相关章节:课本第X章“二叉排序树的插入操作”4. 二叉排序树的删除操作:- 内容:删除过程、算法实现、示例演示- 相关章节:课本第X章“二叉排序树的删除操作”5. 二叉排序树的查找操作:- 内容:查找过程、算法实现、示例演示- 相关章节:课本第X章“二叉排序树的查找操作”6. 二叉排序树的应用实例:- 内容:实际案例、程序编写、问题解决- 相关章节:课本第X章“二叉排序树的应用”7. 二叉排序树的遍历:- 内容:遍历方法、算法实现、示例演示- 相关章节:课本第X章“二叉树的遍历”8. 总结与拓展:- 内容:二叉排序树的优缺点、拓展知识、高级话题- 相关章节:课本第X章“二叉排序树的总结与拓展”教学进度安排:1. 引言与基本概念(1课时)2. 二叉排序树的性质与定义(1课时)3. 插入与删除操作(2课时)4. 查找操作(1课时)5. 应用实例与程序编写(2课时)6. 遍历方法(1课时)7. 总结与拓展(1课时)三、教学方法1. 讲授法:- 通过对二叉排序树的基本概念、性质和操作进行系统讲解,使学生建立完整的知识体系。
数据结构课程设计 哈夫曼树
数据结构课程设计哈夫曼树数据结构课程设计 - 哈夫曼树一、引言哈夫曼树(Huffman Tree)是一种经典的数据结构,常被用于数据压缩和编码中。
它是一种特殊的二叉树,具有最优的前缀编码性质。
本文将详细介绍哈夫曼树的定义、构建方法以及应用场景。
二、哈夫曼树的定义哈夫曼树是一种满足以下条件的二叉树:1. 所有的叶子节点都带有权值;2. 没有度为1的节点;3. 任意两个叶子节点的路径长度不相同。
三、哈夫曼树的构建方法1. 构建哈夫曼树的基本思想是将权值较小的节点放在较低的层次,权值较大的节点放在较高的层次;2. 首先,根据给定的权值集合,将每一个权值看做一个独立的节点;3. 然后,选择两个权值最小的节点,将它们合并为一个新节点,并将新节点的权值设置为这两个节点的权值之和;4. 重复上述步骤,直到只剩下一个节点,即为哈夫曼树的根节点。
四、哈夫曼编码哈夫曼编码是一种变长编码方式,用于将字符转换为二进制编码。
它的特点是没有编码冗余,即每一个字符的编码都不是其他字符编码的前缀。
这种编码方式可以大幅度减小数据的存储空间和传输带宽。
五、哈夫曼树的应用场景1. 数据压缩:哈夫曼树可以根据字符浮现的频率构建最优的编码方式,从而实现数据的高效压缩;2. 文件压缩:将文件中的字符转换为哈夫曼编码,可以大幅度减小文件的大小;3. 图象压缩:将图象中的像素值转换为哈夫曼编码,可以实现图象的无损压缩;4. 视频压缩:将视频中的帧数据转换为哈夫曼编码,可以减小视频文件的大小。
六、哈夫曼树的时间复杂度和空间复杂度1. 构建哈夫曼树的时间复杂度为O(nlogn),其中n为权值的个数;2. 哈夫曼编码的时间复杂度为O(n),其中n为字符的个数;3. 哈夫曼树的空间复杂度为O(n),其中n为权值的个数。
七、总结哈夫曼树是一种重要的数据结构,具有广泛的应用场景。
通过构建最优的编码方式,可以实现高效的数据压缩和编码。
掌握哈夫曼树的定义、构建方法以及应用场景,对于数据结构课程的学习和实践具有重要意义。
数据结构课程设计-二叉树的基本操作
二叉树的基本操作摘要:本次课程设计通过对二叉树的一系列操作主要练习了二叉树的建立、四种遍历方式:先序遍历、中序遍历、后序遍历和层序遍历以及节点数和深度的统计等算法。
增加了对二叉树这一数据结构的理解,掌握了使用c语言对二叉树进行一些基本的操作。
关键字:递归、二叉树、层序遍历、子树交换一、程序简介本程序名为“二叉树基本操作的实现”,其主要为练习二叉树的基本操作而开发,其中包含了建立、遍历、统计叶子结点和深度等一系列操作。
其中定义二叉链表来表示二叉树,用一个字符类型的数据来表示每一个节点中存储的数据。
由于没有进行图形界面的设计,用户可以通过程序中的遍历二叉树一功能来查看操作的二叉树。
二、功能模块2.1功能模块图2.2功能模块详解2.2.1建立二叉树输入要建立的二叉树的扩展二叉树的先序遍历序列,来建立二叉树,建立成功会给出提示。
2.2.2遍历二叉树执行操作之后会有四个选项可供选择:先序遍历、中序遍历、后序遍历、层序遍历。
输入对应的序号即可调动相关函数输出相应的遍历序列。
2.2.3统计叶子节点树执行之后输出叶子结点的个数。
2.2.4求二叉树深度执行之后输出二叉树的深度。
2.2.5子树交换交换成功则会给出提示,用户可通过遍历二叉树来观察子树交换之后的二叉树。
三、数据结构和算法设计3.1二叉链表的设计1.typedef struct BiNode {2.char data;3.struct BiNode* lchild; //左孩子4.struct BiNode* rchild; //右孩子5.}BiTree;用一个字符型保存节点数据,分别定义两个struct BiNode类型的指针来指向左孩子和右孩子。
在BiTree.h中实现相关的功能。
3.2队列的实现1.typedef struct {2. ElemType* data;3.int head;//队头指针4.int tail;//队尾指针5.} SqQueue;队列主要用于二叉树遍历过程中的层序遍历,从根节点开始分别将左右孩子放入队列,然后从对头开始输出。
二叉树遍历及应用课程设计
内蒙古科技大学本科生课程设计论文题目:数据结构课程设计——二叉树遍历及应用学生姓名:学号:专业:计算机科学与技术班级:指导教师:兰孝文2020年 1 月 3 日内蒙古科技大学课程设计任务书课程名称数据结构课程设计设计题目二叉树的遍历和应用指导教师兰孝文时间2019.12.30——2020.1.3一、教学要求1. 掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
二叉树的遍历和应用以二叉链表表示二叉树,在此基础上实现对二叉树的遍历和应用。
要求设计类(或类模板)来描述二叉树,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:❖创建二叉树❖输出二叉树❖二叉树的先序、中序、后序遍历❖二叉树的按层遍历❖统计二叉树的叶子结点、计算二叉树的深度并设计主函数测试该类(或类模板)。
三、设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告四、进度安排资料查阅与讨论(1天)系统分析(1天)系统的开发与测试(2天)编写课程设计说明书和验收(1天)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。
3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
4. 根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问六、建议参考资料1.《数据结构(C语言版)》严蔚敏、吴伟民主编清华大学出版社20132.《数据结构课程设计案例精编(用C/C++描述)》,李建学等编著,清华大学出版社 2010 3.《数据结构:用面向对象方法与C++语言描述》,殷人昆主编,清华大学出版社 2012目录1. 功能设计 (1)(1)创建二叉树 (1)(2)先序递归遍历 (1)(3)中序递归遍历 (1)(4)后序递归遍历 (1)2. 算法流程图 (2)(1)创建二叉树 (2)(2)先序递归遍历 (3)(3)中序递归遍历 (4)(4)后序递归遍历 (5)3.问题描述 (6)4. 详细设计 (7)(1)设计思想 (7)(2)设计表示 (7)(3)函数接口说明: (8)(4)函数调用关系如图所示: (8)(5)实现注释 (9)5. 运行结果截图 (10)6. 总结 (12)附录 (13)1.功能设计(1)创建二叉树利用二叉树模板类,创建二叉树时产生类模板,调用类的构造函数来创建,修改二叉树的结构时,可以调用赋值语句直接把广义表转换成二叉树。
数据结构课程设计-二叉树
《数据结构》课程设计说明书二叉平衡树算法实现班级组别:二指导老师:完成时间:2019.6.19 组长:学号:05 组员1:学号:33 组员2:学号:组员3:学号:成绩:目录目录一、课题设计任务 (2)二、任务分析 (2)1. 数据逻辑结构(算法描述) (2)2. 关键算法思想 (3)三、概要设计(总体设计) (3)四、详细设计 (4)1. 数据存储结构 (4)2. 各模块流程图及算法 (5)3. 算法效率分析 (9)五、测试 (10)1. 删除 (10)2. 查找 (10)3. 遍历 (10)六、课程设计心得 (10)七、参考文献 (11)八、附录 (11)一、课题设计任务针对给定的序列建立存储结构,实现各种遍历;实现树的生成,实现数据的查找、插入、删除,输出各种遍历。
二、任务分析1.数据逻辑结构(算法描述)//中序--递归void InorderTra(PNode root) {if (root) {InorderTra(root->leftChild); //中序遍历左子树printf("%d\t", root->keyValue); //访问根节点InorderTra(root->rightChild); //中序遍历右子数}}//前序--递归void PreOrderTra(PNode root) {if (root != NULL) {printf("%d\t", root->keyValue); //访问根节点PreOrderTra(root->leftChild); //前序遍历左子树PreOrderTra(root->rightChild); //前序遍历右子数}}//后序--递归void PostOrderTra(PNode root) {if (root) {PostOrderTra(root->leftChild); //后序遍历左子树PostOrderTra(root->rightChild); //后序遍历右子树printf("%d\t", root->keyValue); //访问根节点}}//求树的最大深度int getDeep(PNode root) {if (!root) {return 0;}int leftDeep = getDeep(root->leftChild) + 1;int rightDeep = getDeep(root->rightChild) + 1;return leftDeep > rightDeep ? leftDeep : rightDeep;}//从根节点开始打印出所有层void printByLevel(PNode root, int deep) {for (int i = 0; i < deep; i++) {LevelOrderTra(root, i);}printf("\n");}2.关键算法思想树的生成过程保持左右平衡,插入删除过程中保证树的平衡。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息科学与技术学院
数据结构课程设计报告
题目名
二叉树的应用称:
专业班级:计算机科学与技术
目录
1、课程设计的目的、课程设计题目、题目要求错误!未定义书签。
课程设计的目的 .......................... 错误!未定义书签。
课程设计的题目 .......................... 错误!未定义书签。
题目要求................................ 错误!未定义书签。
2课程设计的实验报告内容: ................ 错误!未定义书签。
3课程设计的原程序代码: .................. 错误!未定义书签。
4运行结果............................... 错误!未定义书签。
5. 课程设计总结......................... 错误!未定义书签。
6参考书目............................... 错误!未定义书签。
1课程设计的目的
课程设计的目的:
通过以前的学习以及查看相关资料,按着题目要求编写程序,进一步加强对
编程的训练,使得自己掌握一些将书本知识转化为实际应用当中.在整个程序中,主要应用的是链表,但是也运用了类.通过两种方法解决现有问题.
课程设计的题目: 二叉树的应用
题目要求:
1.建立二叉树的二叉链表存储算法
2.二叉树的先序遍历,中序遍历和后序遍历输出
3.非递归的先序遍历,中序遍历
4.二叉树的层次遍历
5.判断此二叉树是否是完全二叉树
6.二叉树的左右孩子的交换
2课程设计的实验报告内容:
7.通过递归对二叉树进行遍历。
二叉树的非递归遍历主要采用利用队进行遍历。
此后的判
断此二叉树是否是完全二叉树也才采用队,而二叉树的左右孩子的交换则采用的是一个简单的递归。
3课程设计的原程序代码:
#include<iostream>
using namespace std;
#define MAXSIZE 100
int sign=0;
void menu();
立二叉树>>"<<endl;
cout<<"<< 1.二叉树树深>>"<<endl;
cout<<"<< 2.二叉树结点
数>>"<<endl;
cout<<"<< 3.二叉树的叶子结点>>"<<endl;
cout<<"<< 4.二叉树的先序遍历>>"<<endl;
cout<<"<< 5.二叉树的中序遍历>>"<<endl;
cout<<"<< 6.二叉树的后序遍历>>"<<endl;
cout<<"<< 7.二叉树的非递归先序遍历>>"<<endl;
cout<<"<< 8.二叉树的非递归中序遍历>>"<<endl;
cout<<"<< 9.二叉树的层次遍历>>"<<endl;
cout<<"<< 10.判断此树是否是完全二叉树>>"<<endl;
cout<<"<< 11.左右孩子交换>>"<<endl;
cout<<"<< 12.退出>>"<<endl;
cout<<"************************************************************************ *****"<<endl;
}
1用二叉链表创建二叉树:
主菜单
求二叉树树深:
二叉树结点数:
二叉树的中序遍历:
二叉树的层次遍历:
左右孩子交换:
左右孩子交换后的中序遍历:
左右孩子交换后的层次遍历:
5. 课程设计总结:此次课程设计使我对书本的知识有进一步了解。
同时也是我知道自己的一些不足,这次课程设计我是在书本与同学的帮助下完成的。
它并不难,但是我没有自己独自完成是我的错误。
6参考书目:
1.《数据结构》课本
2.《数据结构基本操作》。