二叉树的遍历实验报告数
据结构
The pony was revised in January 2021
实验报告
|
|
实验名称二叉树的遍历
课程名称算法与数据结构试验
|
|
专业班级:信息管理信息系统
学号:
实验日期:
姓名:慕鑫鑫
一、实验名称:二叉树的遍历
二、实验目的
综合应用所学的知识分析问题、解决问题,学会用建立二叉树并对其进行遍历,提高实际编程能力及程序调试能力。
三、实验要求
建立一个二叉树并对其进行遍历(先序,中序,后序)
四、实验内容
1、问题描述:建立一个二叉树,并分别用前序、中序、后序遍历该二叉树。
2、说明:
输入数据:
1,2,3,0,0,4,5,0,0,6,7,0,0,0,8,9,0,0,10,11,12,0,0,13,0,0,14,0,0其中
“0”表示空子树。
输出数据:
先序:1,2,3,4,5,6,7,8,9,10,11,12,13,14。
中序:3,2,5,4,7,6,1,9,8,12,11,13,10,14。
后序:3,5,7,6,4,2,9,12,13,11,14,10,8,1。
五、实验仪器与设备
计算机,JDK,记事本
六、实验原理
建立一个二叉树,利用递归的方法实现对该二叉树的前序,中序,后序的遍历,并输出遍历结果。
七、实验程序及结果
#include
#include<>
#include<>
using namespace std; typedef struct btnode
{
int data;
btnode *Lchild,*Rchild; }*Btnode;
void Creat(Btnode & t)
{
int ch;
cin>>ch;
if(ch==0)
t=NULL;
else
{
btnode *p=new btnode;
p->data=ch;
t=p;
Creat(t->Lchild);
Creat(t->Rchild);
}
}
void Preorder(Btnode & p)
{
if(p!=NULL)
{
cout<
Preorder(p->Lchild);
Preorder(p->Rchild);
}
}
void Midorder(Btnode & p) {
if(p!=NULL)
{
Midorder(p->Lchild);
cout<
Midorder(p->Rchild);
}
}
void Folorder(Btnode & p) {
if(p!=NULL)
{
Folorder(p->Lchild);
Folorder(p->Rchild);
cout<
}
}
void main()
{
btnode *head=new btnode;
cout<<"请输入数据:";
Creat(head);
cout<<"前序遍历:";
Preorder(head);
cout< cout<<"中序遍历:"; Midorder(head); cout< cout<<"后序遍历:"; Folorder(head); getch(); } 八、实验体会 通过本次试验,让我更深刻的理解了二叉树的性质,在上机的操作过场中,发现了自己平时疏忽的细节,以后再学习过程中会注意。