二叉树的基本操作实验文档格式.doc

上传人:b****1 文档编号:13163558 上传时间:2022-10-07 格式:DOC 页数:8 大小:106.50KB
下载 相关 举报
二叉树的基本操作实验文档格式.doc_第1页
第1页 / 共8页
二叉树的基本操作实验文档格式.doc_第2页
第2页 / 共8页
二叉树的基本操作实验文档格式.doc_第3页
第3页 / 共8页
二叉树的基本操作实验文档格式.doc_第4页
第4页 / 共8页
二叉树的基本操作实验文档格式.doc_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

二叉树的基本操作实验文档格式.doc

《二叉树的基本操作实验文档格式.doc》由会员分享,可在线阅读,更多相关《二叉树的基本操作实验文档格式.doc(8页珍藏版)》请在冰豆网上搜索。

二叉树的基本操作实验文档格式.doc

层序:

ABCDEFG

[选作内容]

采用非递归算法实现二叉树遍历。

三、实验前的准备工作

1、掌握树的逻辑结构。

2、掌握二叉树的逻辑结构和存储结构。

3、掌握二叉树的各种遍历算法的实现。

一实验分析

本次试验是关于二叉树的常见操作,主要是二叉树的建立和遍历。

二叉树的遍历有多种方法,本次试验我采用递归法,递归法比较简单。

二概要设计

功能实现

1.intCreatBiTree(BiTree&

T)用递归的方法先序建立二叉树,并用链表储存该二叉树

2.intPreTravel(BiTree&

T)前序遍历

3.intMidTravel(BiTree&

T)中序遍历

4.intPostTravel(BiTree&

T)后序遍历

5.intDepth(BiTree&

T)//计算树的深度

6.inthowmuch(BiTreeT,inth)采用树节点指针数组,用于存放遍历到的元素地址,如果有左孩子,存入地址,j加一,否则没操作,通过访问数组输出层次遍历的结果。

k计算叶子数,j为总节点。

H=0

printf("

%d"

j)

h==1

k)

h==2

for(i=0;

i<

j;

i++)

%c"

Q[i]->

data)

参数错误"

7.intexchang(BiTree&

T)交换左右子树,利用递归,当有左右孩子时才交换

三详细设计

#include<

stdio.h>

stdlib.h>

typedefstructBiTNode

{

chardata;

structBiTNode*lchild,*rchild;

}BiTNode,*BiTree;

intCreatBiTree(BiTree&

T)

{//先序法创建二叉树

charch;

if((ch=getchar())=='

'

T=NULL;

else

{

T=(BiTNode*)malloc(sizeof(BiTNode));

if(!

exit

(1);

T->

data=ch;

CreatBiTree(T->

lchild);

rchild);

}

return0;

}

intPreTravel(BiTree&

{//前序遍历

if(T)

{

printf("

T->

data);

PreTravel(T->

intMidTravel(BiTree&

{//中序遍历

MidTravel(T->

intPostTravel(BiTree&

{//后序遍历

PostTravel(T->

inthowmuch(BiTreeT,inth)

BiTNode*Q[100];

//树节点指针数组,用于存放遍历到的元素地址

if(T==NULL)

空的二叉树\n"

);

Q[0]=T;

//存入树根

inti,k=0;

intj=1;

//j为总节点

for(i=0;

if(Q[i]->

lchild!

=NULL)//如果有左孩子,存入地址,j加一,否则没操作

{

Q[j]=Q[i]->

lchild;

j++;

}

rchild!

=NULL)//如果有右孩子,存入地址,j加一,否则没操作

rchild;

lchild==NULL&

&

Q[i]->

rchild==NULL)

k++;

//计算叶子数

if(h==0)

j);

elseif(h==1)

k);

elseif(h==2)

for(i=0;

else

intDepth(BiTree&

{

intlh,rh;

if(NULL==T)

{

return0;

}

else

lh=Depth(T->

lchild);

rh=Depth(T->

rchild);

return(lh>

rh?

lh:

rh)+1;

}

intexchang(BiTree&

T)//交换左右子树

if(T!

=NULL)

{

if(T->

=NULL&

T->

=NULL)//当有左右孩子时才交换

chart;

t=T->

lchild->

data;

T->

data=T->

rchild->

data=t;

//交换数据

exchang(T->

//递归调用

}

intchoose(BiTreeT)//功能选

inta;

scanf("

&

a);

if(a==1)

先序遍历:

"

PreTravel(T);

elseif(a==2)

中序遍历:

MidTravel(T);

elseif(a==3)

后序遍历:

PostTravel(T);

elseif(a==4)

层序遍历:

howmuch(T,2);

elseif(a==5)

总节点数:

howmuch(T,0);

elseif(a==6)

总叶子数:

howmuch(T,1);

elseif(a==7)

树的深度:

Depth(T));

elseif(a==8)

交换前\n"

exchang(T);

交换后\n"

elseif(a==9)

exit

(1);

elseprintf("

没有这个操作\n"

printf("

操作完成,请输入下一个操作\n"

choose(T);

intmain()//主函数

printf("

----------------二叉树的基本操作----------------\n"

请先建立二叉树,按先序的方式输入如果数据为空输入空格\n"

BiTreeT;

//定义二叉树,初始化

CreatBiTree(T);

choose(T);

四用户手册

根据程序的提示按先序输入二叉树,如果数据为空输入空格,然后回车,输入你要进行的操作的序号。

1.先序遍历、2中序遍历、3后序遍历、4层次遍历、5总节点数、6总叶子数、7树的深度、8交换左右子树、9结束操作

五实验总结

通过实验,我熟悉二叉树树的基本操作,掌握二叉树的实现以及实际应用。

加深了对二叉树的理解,逐步培养解决实际问题的编程能力以及进一步了解了二叉树。

递归的使用,要注意,初始时的状态以及如何使用递归,注意普遍性,思考时从普通的开始。

通过这次上机操作,让我明白书本上的程序一定要自己去调试,这样才能将书本程序与老师讲的内容融会贯通,达到温故而知新。

六运行结果

A

D

B

C

E

F

G

(1)

图表1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1