首页 > 编程语言 >JAVA进阶-set,Comparable排序,数据结构-树

JAVA进阶-set,Comparable排序,数据结构-树

时间:2024-09-14 18:49:36浏览次数:10  
标签:左子 Comparable set JAVA 右子 二叉树 排序 节点

day07-set,Comparable排序,数据结构-树

泛型

  • image-20220619185232830

Set

  • 概述和特点
    • image-20220619185514628
  • TreeSet集合概述和特点
    • image-20220619190343635

Comparable排序

  • 自然排序Comparable的使用

    • 使用空参构造创建TreeSet集合
    • 自定义Student类实现Comparable接口
    • 重写里面的comparaTo方法
    • image-20220619191619044
  • 自然排序简单原理图

    • image-20220619192159870
  • 比较器排序Comparator的使用

    • image-20220619194034067
    • image-20220619194655373
  • 两种比较方式小结

    • image-20220619195008962

    • 参数ComparableCommparator
      排序逻辑排序逻辑必须在待排序对象的类中,故称之为自然排序排序逻辑在另一个实现
      实现实现Comparable接口实现Comparator接口
      排序方法int compareTo(Object o1)int compare(Object o1,Object o2)
      触发排序Collections.sort(List)Collections.sort(List,Comparator)
      接口所在包java.lang.Comparablejava.util.Comparator

数据结构-树

  • image-20220620201344024

  • 二叉树

    • image-20220620201603977
    • image-20220620201837827
  • 二叉查找树

    • 先序排序出来的结果是有序的

    • image-20220620202612488

    • 二叉查找树添加结点

      • 小的存左边,大的存右边,一样的不存
    • 平衡二叉树

      • 二叉树左右两个子树的高度差不超过1
      • 任意结点的左右两个子树都是一颗平衡二叉树
    • 平衡二叉树-旋转

      • 左旋

        • 就是将根节点的右侧往左拉,原先的右子节点变成新的父节点,并把多余的左子节点让出来,给已经降级的根节点当当右子节点。

          • image-20220622095033299
          • image-20220622095058685
      • 右旋

        • 将根节点的左侧往右侧拉,左子节点变成了新的父节点,并把多余的右子节点出让,给已经降级根节点当左子节点。

        • image-20220622095927463

        • image-20220622095741915

      • 触发时机:当添加一个节点后,该树不再是一颗平衡二叉树

    • 平衡二叉树-左边

      • 左左:当根节点左子树有节点插入,导致二叉树不平衡。左子树上的左子树上添加结点
        • image-20220622100527331
        • image-20220622100555062
      • 左右:当根节点左子树的右子树有节点插入,导致二叉树不平衡。
        • 旋转两次,先左旋然后右旋
        • image-20220622101533193
        • image-20220622101455246
        • image-20220622101555623
    • 平衡二叉树-右边

      • 右右:当根节点右子树的右子树有节点插入,导致二叉树不平衡
      • 右左:当根节点右子树的左子树有节点插入,导致二叉树不平衡
  • 红黑树

    • image-20220622102149340
    • 红黑规则
      • image-20220622102320494
    • 添加节点
      • image-20220622102817499
      • 20到左边有两个黑色,到右边只有一个黑色
      • image-20220622102918518
      • 添加三个节点只要调整两次,所以添加节点时默认为红色,效率更高
    • 如何保证红黑规则
      • image-20220622103435725
      • image-20220622103452834
      • 小结
        • image-20220622103832291
        • 添加节点-非根节点位置-父节点为红色-叔叔节点为黑色
          • image-20220622104159195
    • 红黑树小结
      • image-20220622104430041
      • image-20220622104558522

标签:左子,Comparable,set,JAVA,右子,二叉树,排序,节点
From: https://blog.csdn.net/qinqin__/article/details/142264829

相关文章

  • 【工具】前端JavaScript代码在线执行器 方便通过网页 手机测试js代码
    【工具】前端JavaScript代码在线执行器方便通过网页手机测试js代码自动补全js代码格式化代码色彩打印日志清空日志待补充<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,ini......
  • Linux+Docker:3分钟实现MinIO在线部署与Java集成
    Linux下使用Docker安装MinIO1.拉取MinIO镜像dockerpullminio/minio2.创建挂载目录mkdir-p/opt/minio/datamkdir-p/optl/minio/config3.检查端口占用sudolsof-i:9000...4.启动MinIO容器dockerrun--nameminio\#容器名称-p9010:9000......
  • 全面的 Java 学习路线:从零基础到高级开发
    全面的Java学习路线:从零基础到高级开发Java是一门经典且广泛使用的编程语言,不仅用于企业级应用开发,也在Android开发、分布式系统、云计算等领域中占据重要地位。对于想要学习或深入掌握Java的开发者来说,清晰的学习路线至关重要。本文将为你详细梳理从初学到高级的J......
  • JAVA毕业设计171—基于Java+Springboot+vue3+小程序的宠物店小程序系统(源代码+数据库
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue3+小程序的宠物店小程序系统(源代码+数据库)171一、系统介绍本项目前后端分离(可以改为ssm版本),分为用户、店员、管理员三种角色1、用户:注册、登录、宠物购买(评论......
  • java springboot监听事件和处理事件
    在SpringBoot中,监听和处理事件是一种常用的模式,用于在应用程序的不同部分之间传递信息。Spring的事件发布/订阅模型允许我们创建自定义事件,并在这些事件发生时由注册的监听器进行处理。这里,我将提供一个简单的SpringBoot应用程序示例,其中将包括事件的定义、事件的发布以及事......
  • JAVA毕业设计174—基于Java+Springboot+vue3+小程序的农产品社区团购小程序系统(源代
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue3+小程序的农产品社区团购小程序系统(源代码+数据库+开题+万字论文)174一、系统介绍本项目前后端分离(可以改为ssm版本),分为用户、管理员两种角色1、用户:注册、登......
  • 020、二级Java选择题综合知识点(持续更新版)
    1.排序二叉树的遍历结果为有序序列的是:中序遍历解释:中序遍历是一种遍历二叉树的方式,按照“左子树->根节点->右子树”的顺序访问节点。在排序二叉树(BST)中,这种遍历顺序会得到一个递增的有序序列,因为左子树中的所有节点值都小于根节点,而右子树中的节点值都大于根节点。......
  • 基于Java实现的漫画之家系统设计与实现(SpringBoot+Vue+MySQL+Tomcat)
    文章目录1.前言2.详细视频演示3.论文参考4.项目运行截图5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue6.选题推荐毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10.为什么选择我?11.获取源码1.前言......
  • 基于Java实现的家政服务管理平台设计与实现(SpringBoot+Vue+MySQL+Tomcat)
    文章目录1.前言2.详细视频演示3.论文参考4.项目运行截图5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue6.选题推荐毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10.为什么选择我?11.获取源码1.前言......
  • Java 与大数据:Hadoop 和 Spark 的完美集成
    ......