当前位置: 首页 > news >正文

Java基础系列-HashMap源码解析2-AVL树

文章目录

  • AVL树
    • 左旋
    • 右旋
    • 左旋右旋的4种情况
      • LL 型
      • RR 型
      • LR 型
      • RL 型
    • 实际插入时怎么判断是那种类型?
    • 插入时注意事项
    • 删除节点

AVL树

为避免BST树退化成链表的极端情况, AVL 树应运而生。
在这里插入图片描述
平衡因子取值(-1,0,1)
查找、插入、删除操作和BST保持一致,但是需要处理失衡(平衡因子不满足取值范围)的情况。
在这里插入图片描述

左旋

在这里插入图片描述
复杂情况:
在这里插入图片描述

右旋

在这里插入图片描述
复杂情况:
在这里插入图片描述

左旋右旋的4种情况

LL 型

插入节点3导致 14节点失衡。插入位置是14节点的左孩子的左子树上:
在这里插入图片描述

RR 型

插入节点 17 导致 5节点失衡。插入位置是5节点的右孩子的右子树上:
在这里插入图片描述

LR 型

插入节点6,导致节点9失衡,插入位置是在9节点左孩子的右子树上:
在这里插入图片描述

RL 型

插入节点8,导致节点5失衡,插入位置是在5节点右孩子的左子树上:
在这里插入图片描述

实际插入时怎么判断是那种类型?

根据插入位置是在哪个孩子的哪个子树上确定, 也可以通过平衡因子判断,用平衡因子判断更加常见:
在这里插入图片描述

插入时注意事项

如果同时多个祖先节点失衡,只需要调整距离插入节点最近的失衡节点,其他失衡节点会自然平衡.
在这里插入图片描述

删除节点

需要沿着祖先依次向上检查和调整
在这里插入图片描述

相关文章:

  • 从代码学习深度学习 - 自动并行 PyTorch 版
  • 57、Spring Boot 最佳实践
  • NLP高频面试题(五十三)——LLM中激活函数详解
  • 力扣hot100_链表(3)_python版本
  • 盈达科技:登顶GEO优化全球制高点,以AICC定义AI时代内容智能优化新标杆
  • TCP四大特性面试回答引导
  • 【无人机】无人机位置估计出现偏差的原因分析
  • ESP32-S3开发板麦克风录音到SD卡存储测试
  • 自主可控鸿道Intewell工业实时操作系统
  • Rust 语言使用场景分析
  • 【LangChain4j】AI 第一弹:LangChain4j 的理解
  • 图聚类中的亲和力传播
  • 数据库11(触发器)
  • 跨平台软件开发探讨
  • 三目云台转动性能稳定性
  • 动态显微镜数据分析及AI拓展
  • 第50讲:AI+农业金融与风险预测场景实战
  • Centos9安装docker
  • spark和hadoop之间的对比关系和联系
  • 《MySQL:MySQL表的内外连接》
  • 美联储褐皮书:关税政策背景下,美国部分地区物价上涨、经济前景恶化
  • 最高法典型案例:学生在校受伤,学校并非必然担责
  • 新闻1+1丨“龟速”行驶要治理,还要治什么?
  • 【社论】上海车展40年,见证了什么
  • ESG领跑者|每一步都向前,李宁要让可持续发展成为可持续之事
  • 在因关税战爆火的敦煌网上,美国人爱买什么中国商品