实习报告:6.4题 平衡二叉树操作的演示.doc

实习报告:6.4题 平衡二叉树操作的演示.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

zhaoxq + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档