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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值