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

Java基础系列-HashMap源码解析1-BST树

文章目录

  • 二叉搜索树(BST)
    • 引入
    • 查找5
    • 插入9
    • 极端情况
    • 删除
      • 删除叶节点 10
      • 删除节点只有左子树或只有右子树
      • 删除节点既有左子树又有右子树
      • 为什么这么代替?

提到HashMap,就不得不提红黑树(HashMap1.8之后),所以我们先来了解红黑树这个数据结构。但是在学习红黑树之前,又不得不提红黑树的由来。因此,让我们从二叉树搜索树开始,循序渐进理解HashMap原理。

二叉搜索树(BST)

引入

针对有序数组的存储,查找(二分查找)的效率可以达到O(log2n), 但是插入和删除操作因为需要挪动后面所有的元素,所以时间复杂度是O(n)。

由此引入我们的二叉搜索树,即BST树。
在这里插入图片描述左 < 根 < 右
中序遍历: 从小到大

查找5

在这里插入图片描述
查找效率取决于树的高度,O(log2n)

插入9

在这里插入图片描述插入效率也取决于树的高度,O(log2n)

极端情况

退化成链表
在这里插入图片描述

删除

删除叶节点 10

在这里插入图片描述
直接删除

删除节点只有左子树或只有右子树

在这里插入图片描述

删除节点既有左子树又有右子树

如删除根节点9, 拿左子树中最大的节点7代替9 ,然后删除 7
在这里插入图片描述
或者找到右子树中最小的节点10,用10代替9,删除10
在这里插入图片描述

为什么这么代替?

从中序遍历来看7 9 10 三个数的位置,用7 或 10 代替9 并不会影响BST树的性质。
在这里插入图片描述

相关文章:

  • Adobe After Effects的插件--------Optical Flares之Lens Objects参数
  • 【计算机视觉】CV项目实战- Florence-SAM 多模态视觉目标检测+图像分割
  • 12、高阶组件:魔法增幅器——React 19 HOC模式
  • [java八股文][Java基础面试篇]设计模式
  • 视频智能分析平台EasyCVR无线监控:全流程安装指南与功能应用解析
  • 单例模式:确保唯一实例的设计模式
  • Chrome/Edge浏览器使用多屏完美解决方案,http部署使用https部署的功能
  • 【Tools】Git常见操作
  • arm64适配系列文章-第一章-arm64环境上kubesphere和k8s的部署
  • 安裝nginx1.26.3
  • 【MCP】第二篇:IDE革命——用MCP构建下一代智能工具链
  • OCR之身份证识别
  • 第十五届蓝桥杯 2024 C/C++组 艺术与篮球
  • 批量将多个 Excel 表格中的某张图片替换为新的图片
  • 《解锁vLLM:大语言模型推理的加速密码》
  • 大语言模型的“模型量化”详解 - 01:原理、方法、依赖配置
  • python基础语法测试
  • 面向高可靠场景的RISC-V低功耗MCU硬件安全设计
  • 迭代器模式:统一数据遍历方式的设计模式
  • 系统重装——联想sharkbay主板电脑
  • 甘肃公布校园食品安全专项整治案例,有食堂涉腐败变质食物
  • 太空飞梭项目起火,南宁方特东盟神画:明火已扑灭,无人受伤
  • 奥斯卡新规:评委必须看完影片再投票;网友:以前不是啊?
  • 49:49白热化,美参议院对新关税政策产生巨大分歧
  • 马上评丨别让“免费领养”套路坑消费者又坑宠物
  • 京津冀“飘絮之困”如何破解?专家坦言仍面临关键技术瓶颈