news 2026/6/10 16:42:11

js--18

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 + 排序方法)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 17:36:37

用过才敢说!继续教育论文降重神器 —— 千笔·降AIGC助手

在AI技术迅猛发展的今天&#xff0c;越来越多的学生和研究者开始借助AI工具辅助论文写作&#xff0c;以提高效率和内容质量。然而&#xff0c;随之而来的AI生成内容痕迹过重、查重率过高问题也日益突出&#xff0c;成为学术道路上的“隐形绊脚石”。面对知网、维普、万方等平台…

作者头像 李华
网站建设 2026/6/7 2:48:38

华为od 面试八股文_Python_07_含答案

1&#xff1a;is 和 的本质区别&#xff1f;什么是小整数缓存机制&#xff1f; 回答要点&#xff1a; 本质区别&#xff1a;比较的是值 (Value)&#xff0c;即两个对象的内容是否相等&#xff08;调用 __eq__ 方法&#xff09;。is 比较的是身份 (Identity)&#xff0c;即两个…

作者头像 李华
网站建设 2026/6/3 15:26:23

IP转换器解决PLC跨网段通信难题

工厂随着生产规模逐渐扩大&#xff0c;增加了越来越多的新的自动化设备&#xff0c;但同时部分老设备也在继续运行。这时如果没有正确配置网络并更新网络规划&#xff0c;这些设备可能会发生IP冲突的情况&#xff0c;导致设备无法通信&#xff0c;MES、ERP等信息化管理平台得不…

作者头像 李华
网站建设 2026/6/10 13:00:44

挑战一周带Java程序员精通SpringBoot?

大家可以回想一下&#xff0c;当初我们最开始学习Java的时候&#xff0c;搭建一个Web所需要的步骤。。。1、配置web.xml&#xff0c;加载spring和spring mvc2、配置数据库连接、配置spring事务3、配置加载配置文件的读取&#xff0c;开启注解4、配置日志文件...5、配置完成之后…

作者头像 李华