数据结构课程设计:平衡二叉树.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 15 平衡二叉树 目 录 TOC \o 1-2 \h \u 20740 1 课程设计的目的和内容 1 16416 1.1 课程设计目的 1 7141 1.2 主要内容 1 7289 2 课程设计分析 2 29062 2.1 程序的目的和要求 2 30384 2.2 程序的主要数据和功能模块 2 49 3 详细设计 5 26341 3.1 程序主要功能模块的伪代码算法 5 32404 3.2 程序主要流程图 8 5074 4 测试数据与测试结果 9 16422 5 程序的使用和改进 14 13360 5.1 用户使用说明 14 30061 5.2 程序的改进 14 90 6 课程设计小结 15 16284 7 参考文献 16 1 课程设计的目的和内容 1.1 课程设计目的 复习二叉树的三叉链表存储结构和遍历方法。 掌握二叉排序树的特点和生成方法。 掌握平衡二叉树四种不平衡形态的判定和旋转为平衡的方法。 1.2 主要内容 (1)输入结点数据,构造二叉树的结点,按二叉排序树的规则插入该结点到三叉链表中; (2)通过插入函数InsertAVL(BSTNode* T,int key)插入新结点到二叉树中,并递归调用插入函数本身,直到正确插入到二叉树中,并返回上次递归,每返回上次递归一次同时判断其平衡度bf,找到最小不平衡树的根结点p。 (3)判断最小不平衡树的平衡因子(bf)的值,若bf1, 则调用左平衡函数LeftBalance(),若bf-1,则调用右平衡函RightBalance(),再判断根结点p的左(右)孩子的平衡因子(共有LL型、LR型、RR型、RL型四种),然后判定得到的不平衡形态调用不同的旋转函数即可将其重新调整为平衡二叉树; (4)重复步骤(1)(2)(3),直到所有结点都插入到该平衡二叉树中为止; (5)输出该二叉树的前序(或者后序)序列和中序序列,手工恢复出该二叉树,检验其是否为平衡二叉树;并验证其中序序列的有序性。 2 课程设计分析 2.1 程序的目的和要求 (1)本程序演示平衡二叉树的插入,以及AVL的前序遍历和中序遍历,并且验证其中序遍历有序性。 (2)对平衡二叉树出现的的的LL,LR,RL,RR四种情况进行处理是其平衡。 (3)接着要实现平衡二叉树的插入,其中根据平衡二叉树插入的算法要不停的把插入的元素平衡地插入,需要判断平衡并调用左右旋转函数,更新平衡二叉树 2.2 程序的主要数据和功能模块 (1)程序主要数据 平衡二叉树左右子树的深度:ldep,rdep 平衡因子:bf= TreeDepth(ldep)- TreeDepth(rdep) 程序主要功能模块 求树深函数: TreeDepth() 左(右)旋函数: L_Rotate(), R_Rotate() 左右平衡函数: LeftBalance(), RightBalance() 插入函数 : InsertAVL() 前(中)序遍历: Preorder(), Inorder() 输出二叉树函数 Output() 程序主要功能模块之间的调用 插入函数InsertAVL(BSTNode* T,int key)要调用左平衡函数LeftBalance()和右平衡函数RightBalance(),左右平衡函数要调用左旋函数R_Rotate()和右旋函数L_Rotate() (4)平衡二叉树不平衡形态分析 1) LL 型: 新结点 1 插在结点 3 的左孩子的左子树里。调整方法见图2.1。图中以结点2为轴心,将 结点结点3从结点2 的右上方转到结点2 的右下侧,使结点 3成为结点2 的右孩子。 3 3 1 2 3 2 1 LL型 图2.1 2)RR 型:   新结点3 插在结点 1 的右孩子的右子树里。调整方法见图2.2.2。图中以结点 2 为轴心,将结点1 从结点2的左上方转到结点2 的左下侧,使结点1成为结点2 的左孩子。 1232 1 2 3 2 1 3 RR型 3)LR 型:   新结点 2 插在结点 3的左孩子的右子树里。调整方法见图2.3 。分为两步进行:第一步以结点 2 为轴心,将结点 1 从结点2 的左上方转到结点2 的左下侧,使结点1 成为结点2 的左孩子,结点 2 成为结点3的左孩子。第二步跟 LL 型一样处理 ( 应以结点2为轴心 ) 。 31232 3 1 2 3 2 1 2 1 3 LR型 4)RL 型:   新结点 2 插在 1的右孩子的左子树里。调整方法见图2.4 。分为两步进行:第一步以结点2为轴心,将结点 3 从结点 2 的右上方转到结点 2 的右下侧,使结点3 成为结点2 的右孩子,结点 2成为结点 1的右孩子。

文档评论(0)

yurixiang1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档