1 项目介绍

1.1 设计目的

平衡二叉树(AVL)作为一种重要的查找表结构,能有效地支持数据的并行处理。本设计使学生牢固掌握AVL树及其实现方法,并应用该结构实现集合抽象数据类型,提升学生对数据结构与数据抽象的认识,提高学生的综合实践与应用能力。

1.2 设计内容

本设计分为三个层次:

  • 以二叉链表为存储结构,设计与实现AVL树-动态查找表及其6种基本运算

  • 以AVL树表示集合,实现集合抽象数据类型及其10种基本运算

  • 以集合表示个人微博或社交网络中好友集、粉丝集、关注人集,实现共同关注、共同喜好、二度好友等查询功能

1.3 主要数据对象

  • 好友集、粉丝集、关注人集等

1.4 主要数据关系

  • 抽象层面AVL可以表示数据元素之间层次关系或一对多关系

  • 实际应用层面,所讨论的人物关系为集合内元素间的关系。立足于集合建立数据的逻辑模型

1.5 主要运算与功能要求

  • 交互式操作界面(并非一定指图形式界面)

  • AVL树的6种基本运算:InitAVL、DestroyAVL、SearchAVL、InsertAVL、DeleteAVL、TraverseAVL

  • 基于AVL表示及调用其6种基本运算实现集合ADT的基本运算:初始化set_init,销毁set_destroy,插入set_insert,删除set_remove,交set_intersection,并set_union,差set_diffrence,成员个数set_size,判断元素是否为集合成员的查找set_member,判断是否为子集set_subset,判断集合是否相等set_equal

  • 基于集合ADT实现应用层功能:好友集、粉丝集、关注人集等的初始化与对成员的增删改查,实现共同关注、共同喜好、二度好友等查询

  • 主要数据对象的数据文件组织与存储

1.6 设计提示

  • 参考有关文献,实现AVL树的删除操作,维护其动态平衡,这可能是设计中较为复杂的算法;要求提供关键算法的时间与空间复杂度分析

  • 要求从互联网上获取测试数据集或随机生成测试数据集,数据集的大小具有一定规模;数据与结果以文件保存

1.7 结构特点

对一棵查找树(search tree)进行查询/新增/删除 等动作, 所花的时间与树的高度h 成比例, 并不与树的容量 n 成比例。如果可以让树维持矮矮胖胖的好身材, 也就是让h维持在O(log n)左右, 完成上述工作就很省时间。能够一直维持好身材, 不因新增删除而长歪的搜寻树, 叫做balanced search tree(平衡树)。非平衡树会影响树中数据的查询,插入和删除的效率。比如当一个二叉树极不平衡时,即所有的节点都在根的同一侧,此时树没有分支,就变成了一个链表。数据的排列是一维的,而不是二维的。在这种情况下,查找的速度下降到O(N),而不是平衡二叉树的O(logN)。

AVL树是典型的平衡二叉树,定义如下:

AVL树,它或者是一颗空二叉树,或者是具有下列性质的二叉树:

  • 其根的左右子树高度之差的绝对值不能超过1

  • 其根的左右子树都是二叉平衡树

1.8 应用场景

由于在查询以及插入上具有优良的特性,AVL树常用来构造动态查找表(Dynamic Search Table),可以在对数时间内完成插入或者查询操作。

我们常常需要查询某一个元素是否在集合中,或者向集合中插入元素,因此集合可以认为是一种典型的动态查找表,基于AVL树实现的集合(称为TreeSet)因此在插入以及查询上具有非常好的性能,而集合的交并补差操作又可以基于查询和插入实现,因此也具有良好的性能。而常用社交软件微博中粉丝、朋友、关注以及兴趣皆可以抽象为一个集合,朋友是粉丝和关注的交集,共同好友是两个用户好友的交集,二度好友是两个用户好友的差集,基于TreeSet实现的微博应用也因此继承了AVL树优良的特性。

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1302.html

转载于:https://www.cnblogs.com/ddgg5151/p/10091528.html

[源码和文档分享]基于AVL树表示的集合ADT实现与应用相关推荐

  1. java记事本技术参数_[源码和文档分享]基于JAVA的记事本

    一.绪论 现如今,电脑已经成为了每家每户甚至是每个人手头都必有的一种实用性工具,它改变了人们的生活,大大提高了人们的工作效率.在此基础上,电脑端的记事本应用一直是每台电脑所必备的实用性应用,不管是在台 ...

  2. [源码和文档分享]基于Android Studio实现的在线学习课堂APP

    1 项目介绍 1.1 背景 本软件的开发意图是想让更多想学习外语,却没有好的方法,不知道如何学习,怎么学习,本软件可以为那些想学习的外语的用户,提供各种资源文件,因为现在是互联网的时代普通的纸质书籍不 ...

  3. [源码和文档分享]基于Java语言的电梯调度模拟程序

    一 需求分析 某一栋楼有20层,有5部互联的电梯.基于线程的思想,编写一个电梯调度程序.这五部电梯项目联结,即当一个电梯按钮按下去时,其它电梯相应按钮同时点亮,表示也按下去了. 二 程序设计 本项目采 ...

  4. java rpg对战_[源码和文档分享]基于java的RPG回合制游戏

    一.工作积累总结 该项目是一个回合制RPG游戏,讲述了动物主角对抗人类,自逃出动物园开始,一路与人类对抗,提升能力,并寻找新队友组成团体,逼得人类不得不与之谈判,最终与人类达成了和平协议的故事.玩家可 ...

  5. 蔬菜信息配送系统c语言编程,[源码和文档分享]基于C语言的物流配送管理信息系统...

    一 需求分析 系统需要实现的功能如下: (一)各种基本数据的录入 配送路线基本信息录入 路线经停站点基本信息录入 站点经停车辆基本信息录入 其它信息录入 (二)各种基本数据的修改 即:允许对已经录入的 ...

  6. 基于文本 c语言,[源码和文档分享]基于C语言实现的文件系统

    1 实验目的 学习FAT文件系统的构成 能够将自己的程序应用在系统上 熟悉dd,mount,umount,等指令 设计并实现一个目录列表函数(无须支持选项,如ls -a.ls -l等),用来显示当前目 ...

  7. [源码和文档分享]基于C#实现的RPG角色扮演类小游戏

    1 需求分析 1.1 游戏概述 DragonQuest是一个角色扮演类游戏(RPG),该游戏实现的具体功能是设计两种类型的人物,分别为被玩家所控制的玩家人物(Hero)和由系统所控制的外部人物(Ene ...

  8. [源码和文档分享]基于Android Studio实现的学生蹭课APP

    1 任务概述 1.1 项目来源及背景 本小组项目是小组成员集体讨论时,提出的一个满足大学生在课余时间的蹭课需求的安卓端app.既可以供大家查阅自己感兴趣课程的相关信息,又可以在公告板跳转到教务处网页及 ...

  9. c语言商品库存管理系统,[源码和文档分享]基于C++实现的物品库存管理系统

    一.课题目标 用文件系统实现的物品库存管理程序.一种商品的品种里面包括三个品牌,以品种为单位,可以实现商品品种的添加.删除.查找.显示等功能. 组成商品品种的品牌不限数量,设置一个最大值(比如10), ...

最新文章

  1. mysql my.ini utf8_修改了my.ini没有效果,MySql的字符集还是没有变成utf8——mysql中文乱码...
  2. turbo c图形方式下编程小技巧
  3. ssh(Spring+Spring mvc+hibernate)简单增删改查案例
  4. 【转】飞鸽端口号被占用时的解决方法
  5. C中二维数组作为参数的几种做法
  6. 免疫算法的c语言,免疫算法(IA)
  7. OpenCore引导配置说明第三版
  8. 关于安装office软件时和visio软件冲突
  9. 软件测试技术(思维导图)
  10. 用于AB测试的减少方差方法总结和对比
  11. Kubernetes(k8s) YAML文件详解
  12. cad绘制正八边形_软件CAD | 各种“线”工具
  13. Matlab画根轨迹
  14. 编码器 协议不公开_公开编码的3种后果
  15. 阿里云后台部署全过程-3-mysql、supervisor初始化
  16. 格式工厂转码错误原因0x000000001 怎么办
  17. 计算机游戏性能测评,游戏性能测试
  18. 【Java八股文之基础篇(十九)】函数式编程之Stream流(上)
  19. PR时间轴模板 企业发展融资历程PR动态图形模板MOGRT
  20. [ACW]826.单链表

热门文章

  1. 设计模式解密(12)- 桥接模式
  2. dbgrideh显示备注数据类型文本
  3. Nginx配置性能优化(转)
  4. ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[上篇]
  5. 应用开发框架之——业务规则脚本化
  6. ​多大分辨率图像做分类更适合?浙大华为国科大等提出Dynamic Resolution Network,降低计算量还提性能!...
  7. 2020 年“我爱计算机视觉”视频号最受欢迎视频 Top10!
  8. 谷歌大脑联手Hinton提出SimCLR新框架,疯狂提升自监督学习性能
  9. 新型冠状病毒传染性有多强?何时达到峰值?来看一下数学和统计建模结果
  10. 性能比拼!超详细的Tengine GEMM矩阵乘法汇编教程