文档详情

2025年二叉树实验操作技巧与深度解析指南.doc

发布:2025-03-06约2.27千字共7页下载文档
文本预览下载声明

实??验??报告

課程名称算法与数据构造

专????业

学号

姓名?

试验曰期?11月17曰

算法与数据构造试验汇报

二叉树的应用

一、试验目的

1.理解二叉树的构造特点及有关概念,掌握二叉树建立的基本算法?

2.理解二叉树遍历的概念,掌握遍历二叉的算法

3.深入掌握树的构造及非线性特点,递归特点和动态性。?

二、试验内容

二叉树的实現和运算

三、试验规定?

1.用C++/C完毕算法设计和程序设计并上机调试通过。

2.撰写试验汇报,提供试验成果和数据。?

3.分析算法,并简要給出算法设计小結和心得。?

四、算法环节

顾客以三元组形式输入二叉树的結点元素及其位置关系,建立二叉树,并打印输出该二叉树。

顾客输入选择結点,程序调用BiTNode*FindNode(chartag,BiTNode*node)函数,返回子树的根結点,然后调用BiTreeDepth(BiTreeT)函数,求出子树的深度,并输出该值。

3.顾客可以选择与否继续执行程序,若继续,则输入1,否则输入0,結束程序。

五、主程序代码:

intmain(void)

{

BiTreeT;

TElemTypee1;

charnode;//node為顾客选择输入的結点//

intb,choose;//b為以选定結点為子树的深度,choose為实現多次选择输入的标志//

BiTNode*a;//a為选定結点為子树的根結点//

choose=1;//多次选择的标志,当choose為1時运行程序,為0時結束程序//InitBiTree(T);

printf(构造空二叉树后,树空否?%d(1:是0:否),树的深度=%d\n,BiTreeEmpty(T),BiTreeDepth(T));

e1=Root(T);

if(e1!=Nil)

#ifdefCHAR

printf(二叉树的根為:%c\n,e1);

#endif

#ifdefINT

printf(二叉树的根為:%d\n,e1);

#endif

else

printf(树空,无根\n);//三元组构建二叉树stringx;

printf(输入格式阐明:三元组(P,C,L/R)方式输入,P:parent,C:child,L/R:CisPsleftchild/rightchild,输入end結束输入\n);

printf(eg.theroot:input^AL,itsleftchildisB:inputABL,itsrightchildisC:inputACR!\n);

GetUserWord(x);

while(x!=end)

{

AddNode(T,x[0],x[1],x[2]);

GetUserWord(x);

}//输出树PrintTreeLevel(T);

//以三元组形式输入任意二叉树(以大写字母表达結点),求以任意一选定結点為子树的深度。

while(choose)//实現多次选择输入//

{

printf(Pleaseselectanode:);

fflush(stdin);

scanf(%c,node);

a=FindNode(node,T);//a為生成子树的根//

b=BiTreeDepth(a);

printf(theDepthofBiTreeis:%d\n,b);

printf(\nifyouwanttocointuechoose1,elsechoose0:);

fflush(stdin);

scanf(%d,choose);

}

DestroyBiTree(T);

returnEXIT_SUCCESS;

}

六、心得体会?

树是常用的数据构造。通过试验加深了我对树的遍历的认识,巩固了书本中所学的有关树的基本算法。按规定完毕了试验内容。?

通过试验,有如下几点收获和体会:?

1、通过试验还提高了一点改錯能力,对于某些常見问題加深了印象。?

2、编程需要有耐心,尤其实在单步调试的時候,更是馬虎不得,有時候关键就是那么一步,錯过了就得从头来过了。编程也需要勇气,要勇于发現自已的錯误,也要勇于推翻自已之前的思绪,要坚信“没有最佳,只有更好”。编程,最佳是一鼓作气,得每天“摸摸”它,時時想着它,要是过一阵再去碰它那就得先去读懂自已的程序了,一切的一切几乎都得从头开始。编程需要细心,有時一种不注意小錯误就能引出大问題。编程也需要规范,不仅為了他人能看得懂程序,也為了以便自已后来程序的更改与深入

显示全部
相似文档