- 797
- 0
- 约4.8千字
- 约 10页
- 2018-11-19 发布于广东
- 举报
二叉树基本操作实验报告.doc
一、 实验目的
选择二叉链式存储结构作为二叉树的存储结构,设计一个程序实现 二叉树的基本操作(包括建立、输出、前序遍历、中序遍历、后序遍 历、求树高、统计叶子总数等)
二、 实验开发环境 Windows 8. 1 中文版
Microsoft Visual Studio 6. 0
三、 实验内容
程序的菜单功能项如下:
?建立一棵二叉树
前序遍历递归算法
3.?前序遍历非递归算法
3.
?前序遍历非递归算法
中序遍历递归算法
中序遍历非递归算法
6……后序遍历递归算法
?后序遍历非递归算法
8……求树高 9……求叶子总数 10…?-输出二叉树 11…退出
3、实验分析
1、建立一棵二叉树 2、输入二叉树各节点数据
cout?”请按正确顺序输入二叉树的数据:”; cin.getline(t,1000); //先把输入的数据输入到一个t数组
3、递归前序遍历
void BLl(ECS_data *t)
{
if(NULL!=t)
{
cout?t-〉data’’,;
BLl(t-〉l);
BLl(t-〉r);
}
}
4、非递归前序遍历
void preOrder2(ECS_data *t)
{
stackECS_data*〉s; ECS_data *p=t; while(p!=NULL||!s.empty()) {
while(p!=NULL)
{
cout?p-data?
s.push(p);
p=p-〉l;
}
if(!s.empty())
{
p=s.top();
s.popO;
p=p-〉r;
}
}
}
5、递归中序遍历
void BL2(ECS_data *t)
{
if(NULL!=t)
cout?t-data?,7;
BL2(t-r);
}
6、非递归中序遍历
void inOrder2(ECS_data *t) //非递归中序遍历 {
stackECS一data*〉s;
ECS一data *p=t; while(p! =NULL||! s.emptyO)
while(p!=NULL)
{
s.push(p);
p=p-〉l;
}
if(!s.empty())
{
p=s.top();
cout?p-data?:
s.pop();
p=p-〉r;
}
7、递归后序遍历
void BL3(ECS_data *t)
{
if(NULL!=t)
{
BL3(t-l); BL3(t-r); cout?t-data? ;
8、非递归后序遍历
void postOrder3(ECS_data *t)
{
stackECS_data* s;
ECS_data *cur; //当前结点
ECS_data *pre=NULL; //前一次访问的结点
s.push(t);
while(!s.empty())
cur=s.top();
if((cur-l==NULLcur-r==NULL)||
(pre! =NULL(pre==cur-l | |pre==cur-r)))
{
cout?cur-data?H //如果当前结点没有孩子结点或者孩 子节点都已被访问过
s.pop();
pre=cur;
}
else
{
if(cur-r!=NULL)
s.push(cur-r);
if(cur-〉l!=NULL)
s.push(cur-l);
}
9、求树高
int Height (ECS_data *t)
{
if(t==NULL) return 0; else {
int m = Height (t-l);
int n = Height(t-r);
return (m n) ? (m+1): (n+1);
}
}
10、求叶子总
int CountLeaf(ECS_data *t)
{
static int LeafNum=0;//叶子初始数目为0,使用静态变量 if(t)//树非空 {
if(t-〉l==NULLt-〉r==NULL)//为叶子结点 LeafNum++;//叶子数目加1
else//不为叶子结点
CountLeaf(t-〉l);//递归统计左子树叶子数目 CountLeaf(t-r);//递归统计右子树叶子数目
return LeafNum;
}
五、运行结果
6 73 30 65 1-
6 7
3 3
0 6
5 1-
9 5
8 0
0 , 叉:1,84,2 二为,42,9 人数,2:1,4
*按正确
i
6 3
7
5 6
09
5
9 n
4
8 9
斤节历遍历遍历遍:5ke 顺的为y 樹序前^!£:-5-1!£:后:4数仙
正叉薦中归肩为口r
二归遥归遥归遥髙子es S謹非递非递非側叶pr
附:完整程序源代码:
//二叉树链式存储的实现
#includeiostream #includecstring
#i
原创力文档

文档评论(0)