当前位置: 首页 > 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主板电脑
  • 消费者买国外电话卡使用时无信号,店铺:运营商故障,较少见
  • 东阿至聊城公交票价取消八折优惠:运行成本高昂
  • 神舟二十号主要目的发布,在空间站驻留约6个月
  • AI换脸侵权案入选最高法典型案例:明晰人工智能使用边界
  • 云南昭通一公园发现毒饵,多只宠物狗疑中毒致死
  • 多元布局、抱团取暖……上海虹口区召开外向型企业圆桌会议