下载此文档

实验三二叉树.doc


文档分类:办公文档 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
数据结构实验报告
实验名称: 实验三——二叉树
学生姓名:
班级:
班内序号:
学号:
日期: 2012年12月1日

实验目的:
通过选择下面两个题目之一进行实现,掌握如下内容:
掌握二叉树基本操作的实现方法
了解赫夫曼树的思想和相关概念
学习使用二叉树解决实际问题的能力
根据二叉树的抽象数据类型的定义,使用二叉链表实现一个二叉树。
二叉树的基本功能:
1、二叉树的建立
2、前序遍历二叉树
3、中序遍历二叉树
4、后序遍历二叉树
5、按层序遍历二叉树
6、求二叉树的深度
7、求指定结点到根的路径
8、二叉树的销毁
9、其他:自定义操作
编写测试main()函数测试线性表的正确性。
2. 程序分析
存储结构
采用二叉树的存储结构,其中每个二叉树的结点定义了一个结构体,该结构体包含三个元素,分别是一个T 类型的数据域data,一个指向T 类型的指针左孩子, 一个指向T 类型的指针右孩子,示意图如图所示。
lch
data
rch
rch
data
lch
rch
data
lch
在对二叉树的层序遍历的实现过程中,采用了队列的存储结构。队列的存储结构示意图如图所示:
关键算法分析
1、建立二叉树。
template <class T> void BiTree <T>::Create (BiNode<T> * &R,T data[] ,int i)//顺序结构存储二叉链表
{
//i表示位置,从1开始
if(data[i-1]!=0)
{
R=new BiNode<T>;//创建根节点

R->data=data[i-1];

Create(R->lch,data,2*i);//创建左子树

Create(R->rch,data,2*i+1);//创建右子树
}

else

R=NULL;
}
2、前序遍历二叉树(递归调用)。
template <class T> void BiTree <T>::PreOrder(BiNode<T> *R)//前序遍历的实现
{
if(R!=NULL)

{
cout<<R->data;//访问结点
PreOrder(R->lch);//遍历左子树
PreOrder(R->rch);//遍历右子树

}
}
3、中序遍历二叉树(递归调用)。
template <class T> void BiTree <T>::InOrder(BiNode<T> *R)//中序遍历的实现
{
if(R!=NULL)

{
PreOrder(R->lch);//遍历左子树
cout<<R->data;//访问结点
PreOrder(R->rch);//遍历右子树

}
}
4、后序遍历二叉树(递归调用)。
template <class T> void BiTree <T>::PostOrder(BiNode<T> *R)//后序遍历的实现
{
if(R!=NULL)

{
PreOrder(R->lch);//遍历左子树
PreOrder(R->

实验三二叉树 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mh900965
  • 文件大小84 KB
  • 时间2018-03-24