- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实习报告:6.4题 平衡二叉树操作的演示.doc
实习报告:6.4题 平衡二叉树操作的演示
一 需求分析1.本程序演示平衡二叉树的插入,删除,查找,。
2.首先要先初始二叉树为空树;
3.接着要实现平衡二叉树的插入,删除,,其中根据平衡二叉树插入,删除的算法要不停的把插入的元素平衡地插入,需要调用平衡分析函数和左右旋转函数,更新平衡二叉树;删除元素后也要调用平衡分析函数和左右旋转函数,更新平衡二叉树。
4.平衡二叉树的查找则可根据查找算法实现。比较简单。
二.概要设计
1,/*各节点元素的信息*/
typedef char KeyType; /* 设关键字域为字符型 */
typedef struct
{
KeyType key;
int order;
}ElemType; /* 数据元素类型 */
/* 对两个数值型关键字的比较约定为如下的宏定义 */
typedef struct BSTNode
{
ElemType data;
int bf; /* 结点的平衡因子 */
struct BSTNode *lchild,*rchild; /* 左、右孩子指针 */
}BSTNode,*BSTree;
2,公开接口
1)初始化平衡二叉树.主要是建立一个有关平衡二叉的信息.
Status InitDSTable(BSTree *DT)
2)对以*p为根的二叉排序树作右旋处理
void R_Rotate(BSTree &p)
对以*p为根的二叉排序树作左旋处理
void L_Rotate(BSTree &p)
3) 对以指针T所指结点为根的二叉排序树作左平衡旋转处理
void LeftBalance(BSTree &T)
对以指针T所指结点为根的二叉排序树作右平衡旋转处理
void RightBalance(BSTree &T)
4)在根指针T所指二叉排序树中递归地查找某关键字等于key的数据元素
BSTree SearchBST(BSTree T,KeyType key)
若查找成功,则返回指向该数据元素结点的指针,否则返回空指针
5)若在T中不存在和e有相同关键字的结点,则插入一个数据元素为e的新结点
Status InsertAVL(BSTree& T,ElemType e,Boolean& taller)
并返回1,否则返回0,如因插入而失去平衡,则作平衡旋转处理,taller反映T长高与否
6)删除结点元素并重新平衡二叉树
Status DeleteAVL(BSTree& T,ElemType &e,Boolean& lower)
在函数里调用函数:
在二叉树T中删除存在关键字等于e.key的数据元素时,则删除该数据元素的结点*/
Status DeleteBST(BSTree& T,ElemType &e,Boolean &flag)
这个函数里又调用从二叉树中删除结点e的函数
Status Delete(BSTree& p,ElemType &e,Boolean &flag) ;
和函数:
删除结点的平衡处理
void Balance(BSTree& T,ElemType e, Boolean &lower,Boolean &flag)。
7)另外,平衡二叉树的输出函数为:
void BlankOutput(int i)
各函数的调用关系
三 详细设计
完整的程序/*---------------------------------------------------------------------------------*/
#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<math.h>
#include<process.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int Status;
typedef int Boolean;
#define LH +1
#define EH 0
#define RH -1
typedef char KeyType;
typedef struct
{
KeyType key;
int order;
}ElemType;
#define EQ(a
1亿VIP精品文档
相关文档
最近下载
- 湖北省智慧小区建设指引(2023年版).pdf VIP
- 成语改错别字.doc
- SYT5748-2020岩石气体突破压力测定方法.docx
- (完整版)新概念英语第一册阶段测试题(L121-L132.pdf VIP
- 新能源汽车热管理技术 -高清版.pdf
- 高三英语一轮复习投稿类应用文写作讲义:How+would+use+your+smartphone?.docx VIP
- 人民大2024竞争法学(第四版)教学课件第十讲 中国反不正当竞争法的基本制度(三)-王先林.ppt
- 20kV及以下配网修理技改项目施工组织设计.docx
- 《小组合作》ppt课件教案.ppt
- 工贸企业重大事故隐患专项检查表.docx
文档评论(0)