1 / 13
文档名称:

二叉树的建立及遍历.doc

格式:doc   大小:26KB   页数:13
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

二叉树的建立及遍历.doc

上传人:2982835315 2022/1/10 文件大小:26 KB

下载得到文件列表

二叉树的建立及遍历.doc

相关文档

文档介绍

文档介绍:. .
优选
数据构造 实验五
课程数据构造 实验名称 二叉树的建立及遍历第页
专业 班级学号
实验日期: 年 月 日 评分
一 、实验目的
1.学会实现二叉树结点构造和对二叉树的根本操作。
2.掌握对二叉树每种操作的具体实现,学会利用递归方法编写对二叉树这种递归数据构造进展处理的算法。
二 、实验要求
1.认真阅读和掌握和本实验相关的教材容。
2.编写完整程序完成下面的实验容并上机运行。
3.整理并上交实验报告。
三、实验容
1.编写程序任意输入二叉树的结点个数和结点值,构造一棵二叉树,采用三种递归遍历算法(前序、中序、后序)对这棵二叉树进展遍历并计算出二叉树的高度。
2 .编写程序生成下面所示的二叉树,并采用先序遍历的非递归算法对此二叉树进展遍历。
四、实验步骤
〔描述实验步骤及中间的结果或现象。在实验中做了什么事情,怎么做的,发生的现象和中间结果〕
第一题
. .
优选
*include ""
*include""
*include""
*include""
*include<stack>
using namespace std;
*define NULL 0
*define OK 1
*define OVERFLOW -1
typedef int Status;
typedef struct node
{
char data;
struct node *lchild;
struct node *rchild;
}*bitree;
int k=0;
int depth(bitree T)//树的高度
{
if(!T)return 0;
else
{
. .
优选
int m=depth(T->lchild);
int n=depth(T->rchild);
return (m>n"m:n)+1;
}
}
//先序,中序 建树
struct node *create(char *pre,char *ord,int n)
{
struct node * T;
int m;
T=NULL;
if(n<=0)
{
return NULL;
}
else
{
m=0;
T=new(struct node);
T->data=*pre;
T->lchild=T->rchild=NULL;
while(ord[m]!=*pre)
. .
优选
m++;
T->lchild=create(pre+1,ord,m);
T->rchild=create (pre+m+1,ord+m+1,n-m-1);
return T;
}
}
//中序递归遍历
void inorder(struct node *T)
{
if(!T)
return;
else
{
inorder(T->lchild );
cout<<T->data;
inorder(T->rchild );
}
}
void inpre(struct node *T)
{
if(!T)
return;
. .
优选
else
{
cout<<T->data;
inpre(T->lchild );
inpre(T->rchild );
}
}
void postorder(struct node *T)
{
if(!T)
return;
else
{
postorder(T->lchild );
postorder(T->rchild );
cout<<T->data;
}
}
//先序非递归遍历
void inpre1(struct node *T)
{
struct node *p;
. .
优选
struct node *stack[20];
int top=0;
p=T;
cout<<"非递归先序 ";
while(p||top!=0)
{
while (p)
{
st