- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WORD格式整理
专业知识分享
深 圳 大 学 实 验 报 告
课程名称: 数据结构实验与课程设计
实验项目名称: 二叉排序树
学院: 数学与计算科学学院
专业: 数计班
指导教师: 张艳
报告人: 张宏宽 学号: 2013190067 班级: 数计班
实验时间: 2014/12/3
实验报告提交时间: 2014/12/7
教务部制
实验目的与要求:
实验目的:
1、掌握二叉排序树的定义和特性
2、掌握二叉排序树的建立方法
3、实现二叉排序树的查找技术
4、掌握二叉排序树的查找性能
实验要求:
1、熟悉C++语言编程
2、了解二叉排序树的原理
实验内容:
二叉排序树定义为:
若树不空,则:左子树所有结点的值小于根结点;右子树所有结点的值大于根结点。
二叉排序树的中序遍历得到数据的升序排序。
实验内容:
给定一个关键字序列,生成一个二叉排序树;
对给定的关键字进行查找;
返回查找是否成功,关键字所在的位置以及查找次数
实验过程:(给出算法思想,并附上代码,对代码中的变量和核心语句进行注释)
#includecstdlib
using namespace std;
typedef int Status;
static int count;
typedef struct BiTNode
{
int data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
Status SearchBST(BiTree T,int key,BiTree f,BiTree *p)//寻找
{
count++;
if (!T)
{
*p = f;
return false;
}
else if (key==T-data)
{
*p = T;
return true;
}
else if (keyT-data)
return SearchBST(T-lchild, key, T, p);
else
return SearchBST(T-rchild,key,T, p);
}
Status InsertBST(BiTree *T, int key)//生成树
{
BiTree p,s;
if (!SearchBST(*T, key, NULL, p))
{
s = (BiTree)malloc(sizeof(BiTNode));
s-data = key;
s-lchild = s-rchild = NULL;
if (!p) *T= s;
else if (keyp-data)
p-lchild = s;
else
p-rchild = s;
return true;
}
else
return false;
}
Status Inorder(BiTree *T)
{
if(*T)
{
Inorder((*T)-lchild);
if((*T)-data!=NULL)
{
cout(*T)-data ;
}
Inorder((*T)-rchild);
}
return 0;
}
Status Search(BiTree *T, int key)
{
BiTree p;
count=0;
if (SearchBST(*T, key, NULL, p))
coutcounte
文档评论(0)