有序表二分查找法和二叉排序树的查找

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

重庆交通大学综合性设计性实验报告

班级:

实验项目名称:

实验项目性质:

实验所属课程:

实验室(中心):

指导教师:

实验完成时间:年月日

一、实验目的

应用线性结构、树形结构实现查找。

二、实验内容及要求

实验内容:

1)有序表的二分查找

2)二叉排序树的查找

实验要求

1)建立有序表,然后进行二分查找2)建立二叉排序树,然后查找

三、实验设备及软件

Win7操作系统

Microsoft Visual Studio 2010

四、设计方案

㈠题目(老师给定或学生自定)

有序表的二分查找和二叉排序树的查找

㈡设计的主要思路

有序表的二分查找:

定义模板类:COderTable,其中的bool Find(T &element,int &i)函数采用二分查找法实现对数据的查找。

㈢主要功能

1)、建立有序表,然后进行二分查找

2)、建立二叉排序树,然后查找

五、主要代码

有序表的二分查找:

声明并定义COderTable类:

#define CODERTABLE

template

class COderTable

{

private:

T Element[100];

int Maxnumber;

public:

COderTable();//构造函数

~COderTable();//析构函数

bool Initial();//初始化数组

bool Find(T &element,int &i);//查找元素element,如果查找成功,则返回查找点的位置i,反之,i=-1

};

实现查找的函数:

template

bool COderTable::Find(T &element,int &i) {

int low=0,height=99,mid=(height+low)/2; while(low<=height)

{

if(Element[mid]==element)

{

i=mid+1;

return true;

}

if(Element[mid]

low=mid+1;

if(Element[mid]>element)

height=mid-1;

mid=(low+height)/2;

}

return false;

}

二叉排序树的查找:

声明并定义相关类:

#define CELEMENT

template

class CElement

{

private:

T Element;

public:

CElement *LeftSon;

CElement *RightSon;

public:

CElement();//构造函数

~CElement();//析构函数

void Set_Element(T ele);//设置值

T Get_Element();//取值

bool operator >(CElement &celement);//重载>

bool operator ==(CElement &celement);//重载==

bool operator !=(CElement &celement);//重载!= };

#define CTREE

template

class CTree

{

private:

CElement *Root;

private:

int Get_Number(CElement *root);//计算二叉树的节点个数

int Get_Depth(CElement *root);//计算二叉树的深度,根节点为第1层

int Get_Leaf(CElement *root);//计算二叉树的叶节点的个数

CElement *Find(CElement *root,CElement *element);//查找某个节点

CElement *FindFather(CElement *root,CElement *element);//查找某节点的父节点

CElement *FindLeftChild(CElement *root,CElement *element);//查找某节点的左子女节点

CElement *FindRightChild(CElement *root,CElement *element);//查找某节点的右子女节点

int DepthOfElement(CElement *root,CElement *element);//计算结点所在的层次,根节点在第一层

void InorderTraversal(CElement *root);//中序遍历二叉树

void PreorderTraversal(CElement *root);//前序遍历二叉树

void PostorderTraversal(CElement *root);//后序遍历二叉树

void Clear(CElement *element);//清空树

void InSert(CElement *root,CElement *element);//使用层次遍历,插入一个节点,按照这种方式插入将得到一个满二叉树,使用到了队列

public:

CTree();

~CTree();

相关文档
最新文档