数据结构课程设计实验报告二叉树的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 *leftChild; // 左孩子

BinTreeNode *rightChild; // 右孩子

};

4.创建头文件:文件(File)→新建(new)→在弹出的对话框中选择文件标签

(Files)→选中选项:C/C++ Header File→输入头文件名(此处定义为“”)

→单击“确定”按钮(OK)。

定义了链队的类模板,代码如下:

#ifndef __BINNARY_TREE_H__

#define __BINNARY_TREE_H__

// 二叉树类模板

template

class BinaryTree

{

private:

// 二叉树的数据成员:

BinTreeNode *root;

// 二叉树的私有函数:

void PreOrderHelp(BinTreeNode *r); // 先序遍历

void InOrderHelp(BinTreeNode *r); // 中序遍历

void PostOrderHelp(BinTreeNode *r);// 后序遍历

void Creat(BinTreeNode *r,

int flag, ElemType empty, ElemType end);

//递归创建子树

BinTreeNode *GetRoot(); //返回根指针

BinTreeNode *Locate(BinTreeNode *r,

ElemType e); //查找元素值为e的结点,返回指针.

BinTreeNode* LeftChild(ElemType e);

//定位指定元素的左孩子,返回其指针。

BinTreeNode* Parent(BinTreeNode*r,

ElemType e); //定位指定元素的父结点

BinTreeNode* LeftSibling(ElemType e);

//定位指定元素的左兄弟

int Size(BinTreeNode *r);

int Depth(BinTreeNode *r);

int Leaf(BinTreeNode *r); //统计并返回叶子结点个数

void Clear(BinTreeNode *r);

void DisplayTreeeHelp(BinTreeNode *r, int level);

// 按树状形式显示以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.运行结果截图(可以有多张)

相关文档
最新文档