数据结构课程设计实验报告二叉树的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》
实验报告
题目:_二叉树的实现
学号:___ ____
姓名:____ ___
东南大学成贤学院计算机系
实验题目
一、实验目的
1.掌握二叉树的基本操作,理解递归算法。
二、实验内容
1.将下图所示二叉树采用二叉链表进行存储,然后进行各种操作测试。
三、实验步骤
1.启动:开始菜单→程序→Microsoft Visual Studio 6.0 →
2.建立工程:文件(File)→新建(new)→在弹出的对话框中选择工程标签(Project)→选中选项:Win32 Console Application(不能选别的)→输入工程名(Project Name)→选择工程的存放位置(Location)→单击“确定”按钮(OK)→在弹出的对话框中选中选项:An Empty Project→单击“完成”按钮(Finish)→在弹出的对话框中单击“确定”按钮( OK )。
3.创建头文件:文件(File)→新建(new)→在弹出的对话框中选择文件标签(Files)→选中选项:C/C++ Header File→输入头文件名(此处定义为“”)→单击“确定”按钮(OK)。
内容如下:
// 二叉树结点类模板
template
struct BinTreeNode
{
// 数据成员:
ElemType data; // 数据域
BinTreeNode
BinTreeNode
};
4.创建头文件:文件(File)→新建(new)→在弹出的对话框中选择文件标签
(Files)→选中选项:C/C++ Header File→输入头文件名(此处定义为“”)
→单击“确定”按钮(OK)。
定义了链队的类模板,代码如下:
#ifndef __BINNARY_TREE_H__
#define __BINNARY_TREE_H__
// 二叉树类模板
template
class BinaryTree
{
private:
// 二叉树的数据成员:
BinTreeNode
// 二叉树的私有函数:
void PreOrderHelp(BinTreeNode
void InOrderHelp(BinTreeNode
void PostOrderHelp(BinTreeNode
void Creat(BinTreeNode
int flag, ElemType empty, ElemType end);
//递归创建子树
BinTreeNode
BinTreeNode
ElemType e); //查找元素值为e的结点,返回指针.
BinTreeNode
//定位指定元素的左孩子,返回其指针。
BinTreeNode
ElemType e); //定位指定元素的父结点
BinTreeNode
//定位指定元素的左兄弟
int Size(BinTreeNode
int Depth(BinTreeNode
int Leaf(BinTreeNode
void Clear(BinTreeNode
void DisplayTreeeHelp(BinTreeNode
// 按树状形式显示以r为根的二叉树,level为层次数,可设根结点
的层次数为1
public:
// 二叉树公共方法声明:
BinaryTree( );
void CreateBiTree();// 构造二叉树
B void InOrder(); // 二叉树的中序遍历
void PreOrder(); // 二叉树的先序遍历
void PostOrder(); // 二叉树的后序遍历
void LevelOrder(); //按层遍历
int Locate(ElemType e); //查找元素值为e的结点。
int GetLeft(ElemType e, ElemType &c);
//读取指定元素的左孩子
int GetParent(ElemType e, ElemType &f);
//读取指定元素的父元素
int GetLeftSibling(ElemType e, ElemType &s);
//读取指定元素的左兄弟
int InsertChild(ElemType e,ElemType x,ElemType y);
//为指定元素 e 插入左、右孩子
int SetElem(ElemType e, ElemType x);
//更新指定元素
int Size( );
int Depth( );
int Leaf( ); //统计并返回叶子结点个数
virtual ~BinaryTree();// 销毁二叉树
void DisplayTree();
};
函数实现由学生自己完成
#endif
5. 创建源程序文件main.cpp:文件(File)→新建(new)→在弹出的对话框中选择文件标签(Files)→选中选项:C++ Source File→输入源程序文件名(main)→单击“确定”按钮(OK)。
文件内容如下:
#include "binary_tree.h" // 二叉树类
int main(void)
{
利用swtich构造菜单,对二叉树操作进行测试。(初始化,构造二叉树,图形显示,前序,中序,后序遍历结果,求结点个数,二叉树深度,叶子结点树,查找结点,找指定结点的左孩子,双亲,左兄弟,插入新的左、右孩子。
}
注意:1.在编程过程中注意及时保存编写内容。
四、实验结果
1.的代码
2.的代码
3.运行结果截图(可以有多张)