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

js--18

一、树结构基础

1. 二叉查找树(BST)

  • 核心规则:左子树所有节点值 < 当前节点值 < 右子树所有节点值,无重复节点。
  • 添加规则:小值存左、大值存右、等值不存。
  • 遍历方式
    • 前序:当前节点 → 左子节点 → 右子节点
    • 中序:左子节点 → 当前节点 → 右子节点
    • 后序:左子节点 → 右子节点 → 当前节点
    • 层序:按层次从上到下、从左到右遍历

2. 平衡二叉树(AVL 树)

  • 核心规则:任意节点左右子树高度差 ≤ 1。
  • 旋转机制:添加节点破坏平衡时,通过左旋 / 右旋恢复平衡:
    • 左左型:一次右旋
    • 左右型:先左旋后右旋
    • 右右型:一次左旋
    • 右左型:先右旋后左旋

3. 红黑树

  • 核心特性:自平衡二叉查找树,通过 “红黑规则” 实现平衡(非高度严格平衡)。
  • 红黑规则
    1. 节点颜色仅为红 / 黑;
    2. 根节点必为黑;
    3. 叶节点(NIL)为黑;
    4. 红节点的子节点必为黑;
    5. 任意节点到其叶节点的路径黑节点数相同。
  • 添加规则
    • 新节点默认红色(减少规则冲突);
    • 根节点直接设为黑色;
    • 父节点为黑:无需操作;
    • 父节点为红:根据叔叔节点颜色调整(变色 / 旋转)。

二、Set 系列集合

1. 核心特性

  • 无序(LinkedHashSet 除外)、不重复、无索引。
  • 无索引:不能用普通 for 循环遍历,无索引操作方法。

2. 实现类对比

表格

实现类核心特点底层结构适用场景
HashSet无序、去重、效率最高哈希表(数组 + 链表 + 红黑树)普通去重场景(默认选择)
LinkedHashSet有序(存取一致)、去重哈希表 + 双向链表去重且需保证存取顺序
TreeSet可排序、去重红黑树去重且需对元素排序

3. 哈希表底层原理

  • 结构:JDK8 前为数组 + 链表,JDK8 后为数组 + 链表 + 红黑树(链表长度 > 8 且数组长度≥64 时转红黑树)。
  • 存储流程
    1. 计算元素哈希值,确定数组存储位置;
    2. 位置为空则直接存入;
    3. 位置非空则调用equals()比较:
      • 属性值相同:不存入(去重);
      • 属性值不同:JDK8 前新元素存数组,老元素挂其后;JDK8 后新元素挂老元素后。
  • 关键要求:存储自定义对象时,必须重写hashCode()equals()保证去重逻辑正确。

4. TreeSet 排序规则

表格

排序方式实现方式特点
自然排序实体类实现Comparable接口,重写compareTo方法规则绑定实体类(侵入式)
比较器排序创建 TreeSet 时传入Comparator比较器规则与实体类解耦(更灵活)
  • 默认排序规则
    • 数值类型:从小到大;
    • 字符 / 字符串:按 ASCII 码升序。

三、集合选择指南

  1. 元素可重复
    • 默认选ArrayList(查询快);
    • 增删多选LinkedList(增删快)。
  2. 元素去重
    • 默认选HashSet(效率最高);
    • 需有序选LinkedHashSet
    • 需排序选TreeSet(或 List + 排序方法)。

http://www.jsqmd.com/news/370407/

相关文章:

  • 襄阳团购代运营首选:合肥三十六行(襄阳)分公司四大平台领跑 - 野榜数据排行
  • 使用Jumia API获取商品详情数据的技术实践
  • 苏州德力智仓:智慧仓储物流的技术引领者与价值共创伙伴 - 品牌策略主理人
  • 2026年受欢迎的直播排班软件排名,靠谱品牌推荐 - 工业设备
  • 西安石灰厂哪个品牌好,有哪些高性价比的值得推荐 - 工业设备
  • FPGA 项目为啥那么重要?
  • lazarus编写的程序在Ubuntu在任务栏或快捷栏不显示设定的图标
  • 2026年北京钢管公司排行榜,万泓泰钢管公司反馈怎么样 - 工业品网
  • 价格合理的有机肥生产线全套设备生产厂哪家值得选 - mypinpai
  • 天猫超市购物卡回收变现,京顺回收高效解决方案 - 京顺回收
  • 【好物推荐】告别重复输入!用 utools 超级文本片段打造跨应用的“实时模板”
  • 2026年北京旅行社选购指南,启程旅行社投诉处理情况如何要了解 - mypinpai
  • 分析黑龙江口碑好的中专学校,哈尔滨工大技工学校优势凸显 - 工业推荐榜
  • CH57x-CH59x低功耗同时外设保持修改示例
  • 风光储、风光储并网直流微电网simulink仿真模型。 各个系统功能明确,波形质量
  • 电池低电压时,TP4056充电电流过低导致设备不断重启
  • 为什么有些工厂越做越小?问题出在沟通上
  • 桂花网蓝牙网关在体育运动监测方案中的应用及案例介绍
  • 【黑客技术零基础入门】PHP基础语法(非常详细)零基础入门到精通,收藏这一篇就够了
  • Comsol 中手性介质的奇妙探索:本构关系修改与表面态探秘
  • 【网络安全入门基础教程】其实大部分网络安全岗都是先混进去再说!分享新人“混“进去生存指南
  • 2026年,银川酒吧装修推荐哪家装修公司? 专业酒吧装修,优选指南 - 宁夏壹山网络
  • GeotrustOV通配符SSL证书续费
  • 大模型RAG实战,从被骂不靠谱到成为部门MVP,这是我的踩坑全记录【转】
  • 知识变现的“跨平台协同“:AI智能体如何构建多平台变现生态|创客匠人
  • 【网络安全入门基础教程】零基础也能入门网络安全?试试这份爆火的90天网络安全学习计划
  • 2026年目前比较好的AGV货架产品推荐,仓库货架/冷库货架/仓库存储货架/轻型货架/抽屉式模具架,AGV货架产品哪家好 - 品牌推荐师
  • 一天一个Python库:httpx - 现代化的HTTP客户端
  • SpringBoot 开发第三天 学习内容
  • 深入解析:Jenkins 全面详解