|
|
实验名称 二叉树的遍历
课程名称 算法与数据结构试验
|
|
专业班级: 信息管理信息系统
学 号: ********
实验日期: 20101201
姓名:***
一、实验名称:二叉树的遍历
二、实验目的
综合应用所学的知识分析问题、解决问题,学会用建立二叉树并对其进行遍历,提高实际编程能力及程序调试能力。
三、实验要求
建立一个二叉树并对其进行遍历(先序,中序,后序)
四、实验内容
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< Midorder(head); cout< Folorder(head); getch(); } 八、实验体会 通过本次试验,让我更深刻的理解了二叉树的性质,在上机的操作过场中,发现了自己平时疏忽的细节,以后再学习过程中会注意。