- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第PAGE
第PAGE1页共NUMPAGES6页
竭诚为您提供优质文档/双击可除
二叉树的建立和遍历的实验报告
篇一:二叉树遍历实验报告
数据结构实验报告
报告题目:二叉树的基本操作学生班级:
学生姓名:学号:
一.实验目的
1、基本要求:深刻理解二叉树性质和各种存储结构的特点及适用范围;掌握用指针类型描述、访问和处理二叉树的运算;熟练掌握二叉树的遍历算法;。
2、较高要求:在遍历算法的基础上设计二叉树更复杂操作算法;认识哈夫曼树、哈夫曼编码的作用和意义;掌握树与森林的存储与便利。二.实验学时:
课内实验学时:3学时课外实验学时:6学时三.实验题目
1.以二叉链表为存储结构,实现二叉树的创建、遍历(实验类型:验证型)1)问题描述:在主程序中设计一个简单的菜单,分别调用相应的函数功能:1…建立树2…前序遍历树3…中序遍历树4…后序遍历树5…求二叉树的高度6…求二叉树的叶子节点7…非递归中序遍历树0…结束
2)实验要求:在程序中定义下述函数,并实现要求的函数功能:createbinTree(binTree
structnode*lchild,*rchild;
}binTnode;元素类型:
intcreatebinTree(binTree
voidpreorder(binTreevoidInorder(binTree
voidpostorder(binTreevoidInordern(binTreeintleaf(binTree
intpostTreeDepth(binTree
2、编写算法实现二叉树的非递归中序遍历和求二叉树高度。1)问题描述:实现二叉树的非递归中序遍历和求二叉树高度2)实验要求:以二叉链表作为存储结构
3)实现过程:
1、实现非递归中序遍历代码:
voidcbiTree::Inordern(binTreeinttop=0;p=T;do{
while(p!=nuLL){
stack[top]=p;;top=top+1;p=p-lchild;};
if(top0){
top=top-1;p=stack[top];
printf(%3c,p-data);p=p-rchild;}}
while(p!=nuLL||top!=0);}
2、求二叉树高度:
intcbiTree::postTreeDepth(binTreeif(T!=nuLL){
l=postTreeDepth(T-lchild);r=postTreeDepth(T-rchild);max=lr?l:r;return(max+1);
}
elsereturn(0);}
实验步骤:
1)新建一个基于consoleApplication的工程,工程名称biTreeTest;2)新建一个类cbiTree二叉树类。
3)在类cbiTree的头文件上方定义二叉链表存储数据类型结构体biTnode。4)在类cbiTree中定义函数createbinTree();preorder();Inorder();
postorder();postTreeDepth();Inordern();
5)实现函数createbinTree();preorder();Inorder();
postorder();postTreeDepth();Inordern();
6)在主函数中定义对象,通过对象调用函数,实现各个函数的操作。运行结果:
篇二:数据结构实验报告-二叉树的实现与遍历
《数据结构》第六次实验报告
学生姓名学生班级学生学号指导老师
重庆邮电大学计算机学院
一、实验内容
1)采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历的操作,求所有叶子及结点总数的操作。
2)输出树的深度,最大元,最小元。
二、需求分析
遍历二叉树首先有三种方法,即先序遍历,中序遍历和后序遍历。
递归方法比较简单,首先获得结点指针如果指针不为空,且有左子,从左子递归到下一层,如果没有左子,从右子递归到下一层,如果指针为空,则结束一层递归调用。直到递归全部结束。
下面重点来讲述非递归方法:
首先介绍先序遍历:
先序遍历的顺序是根左右,也就是说先访问根结点然后访问其左子再然后访问其右子。具体算法实现如下:如果结点的指针不为空,结点指针入栈,输出相应结点的数据,同时指针指向其左子,如果结点的指针为空,表示左子树访问结束,栈顶结点指针出栈,指针指向其右子,对其右子树进行访问,如此循环,直至结点指针和栈均为空时,遍历结束。
再次介绍中序遍历
文档评论(0)