首页 > 编程语言 >Java常见的8种数据结构

Java常见的8种数据结构

时间:2022-08-17 16:48:27浏览次数:81  
标签:Java 哈夫曼 复杂度 常见 查找 二叉树 红黑树 增删 数据结构

一、数组、链表、哈希表;队列、栈

 1.数组:

 2.链表:

 3.哈希表:

 4.队列:先进先出

 5.栈:先进后出

数据结构优点缺点
数组 查找快 增删慢
链表 增删快 查找慢
哈希表 增删、查找都快 数据散列,对存储空间有浪费
顶部元素插入和取出快 除顶部元素外,存取其他元素都很慢
队列 顶部元素取出和尾部元素插入快 存取其他元素都很慢
二叉树 增删、查找都快 删除算法复杂
红黑树 增删、查找都快 算法复杂
位图 节省存储空间 不方便描述复杂的数据关系

 

 

 

 

 

 

 

 

 

 

 

二、堆、树(二叉树、B树、B+树、红黑树)

1.二叉树分类

  时间复杂度最好情况是O(logn) ,最坏情况下时间复杂度O(n)

  1)满二叉树:如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。

  

  2)完全二叉树:如果一个二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

  

       3)二叉搜索树:左子树都比其根节点小,右子树都比其根节点大,递归定义。

     二叉搜索树的中序遍历一定是从小到大排序的。

  

  4)平衡二叉树(红黑树):要么是一棵空树,要么保证左右子树的高度之差不大于 1,并且子树也必须是一棵平衡二叉树。

    平衡二叉树必须是二叉搜索树

       性能:平衡二叉树在添加和删除时需要进行复杂的旋转保持整个树的平衡,最终,插入、查找的时间复杂度都是 O(logn),性能已经相当好了。

    

   5)最优二叉树(哈夫曼树): 树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。

    哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。应用:哈夫曼编码。

2.红黑树:是一种自平衡的二叉树。应用内存排序。

插入和删除的最坏的时间复杂度是O(log N) 

3.B树:平衡多路查找树(查找路径不只两个),不同于常见的二叉树,它是一种多叉树。

4.B+树:B树的一种升级版本,B+树查找的效率要比B树更高、更稳定。应用于数据库搜索。

    非叶子节点只保存索引,不保存实际的数据,数据都保存在叶子节点中。

 

三、图(对现实世界建模)

 

标签:Java,哈夫曼,复杂度,常见,查找,二叉树,红黑树,增删,数据结构
From: https://www.cnblogs.com/wenxiangchen/p/16594670.html

相关文章

  • 代码审计(Java)——WebGoat_SqlInjection
    一、SqlInjection_introduction1.这里level1-8就不说了,都是介绍+简单的sql语句,直接上level9这里可以看到,是给出了选择框的一道题,OWASP真不错,生怕你不会哈哈~......
  • 前端常见code码统一报错提示
    200:服务器成功返回请求数据201:新建或修改数据成功202:一个请求已经进入后台排队(异步任务)204:删除数据成功 客户端错误状态码400:发出的请求有错误,服务器没有进行新建......
  • java学习笔记010
    1.JDK8.0接口新特性static方法 只能通过接口名.静态方法名的方式来调用default方法 可以通过实现类对象.默认方法名的方式来调用 在实现类的方法中通过接口名.su......
  • 借助HSDB查看Java类对应的klass模型
    问题一:Java的每个类被加载到JVM中,他们对应的C++类是什么?答:klass模型问题二:在JDK8中,Java类存储在方法区还是堆区?普通的Java类,在JVM中对应的C++类是InstanceKlass,存储......
  • java 携带session 前台传递cookie 跨域解决方案 vue + java
    前台axios设置withCredentials:true后台设置header("Access-Control-Allow-Origin","源地址";header("Access-Control-Allow-Credentials","true");这里源地址......
  • 【Java基础】8种基础数据类型和String类型
    变量必须先声明,后使用1.变量分类(1)按数据类型分(2)按声明的位置分2.基本数据类型和String类型(1)整型整型占用存储空间byte1字节=8bitshort2字节int4......
  • Java面试知识点总结(二)
    字符串&集合面试题汇总一、Java中操作字符串都有哪些类?它们之间有什么区别?操作字符串的类有:String、StringBuffer、StringBuilder。String和StringBuffer、StringBu......
  • 数据结构进阶题目
    \(CF498DTrafficJamsIntheLand\)\(Soltuion:\)发现\(\mathrm{lcm}(1,2,3,4,5,6)=60\),把\(t\)在\(\mod60\)意义下进行不会影响结果的正确性。接下来继续考......
  • java stream List<List<Object>> 转List<Object>
    以下几种方法都可以private<T>List<T>mergeOne(Stream<List<T>>listStream){returnlistStream.flatMap(List::stream).collect(toList());}private<T>Lis......
  • Javaweb09-请求跳转项目 分页条件查询 + 增删改 + 邮件登录
    1、Jar包<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven......