news 2026/5/1 6:18:47

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/4/30 18:01:30

桂花网蓝牙网关在体育运动监测方案中的应用及案例介绍

在体育产业数字化转型浪潮中&#xff0c;体育运动监测正从“经验判断”向“数据驱动”升级&#xff0c;核心需求聚焦于运动数据的实时采集、精准传输、高效分析及安全预警&#xff0c;覆盖少儿体育、校园体育、专业训练、电竞赛事等全场景。桂花网蓝牙网关凭借远距离传输、高并…

作者头像 李华
网站建设 2026/4/11 12:49:11

springboot口腔医院信息管理系统vue

目录系统架构概述核心功能模块技术实现细节系统优势部署与维护项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作系统架构概述 基于SpringBoot和Vue的口腔医院信息管理系统采用前后端分离架构&#xff0c;后…

作者头像 李华
网站建设 2026/4/30 19:42:01

uTools:一个能让你卸载几十个软件的效率“外挂”

01 引言 你是否厌倦了在无数软件间来回切换&#xff1f;是否希望有一个“万能入口”&#xff0c;能瞬间响应所有临时需求&#xff1f;试试 uTools&#xff0c;它不只是一种工具&#xff0c;更是一种全新的效率哲学。通过一个简单的搜索框和智能面板&#xff0c;它将海量插件融入…

作者头像 李华
网站建设 2026/5/1 6:13:29

算法学习日记 | 前缀和

&#x1f9e0; 算法学习日记 | 今天我用「前缀和」解了两道题&#xff0c;原来“预处理”能这么强&#xff01; 大家好&#xff0c;我是你们的算法学习搭子 &#x1f44b; 今天继续我的算法入门之旅&#xff0c;重点练习了**前缀和&#xff08;Prefix Sum&#xff09;**这一高效…

作者头像 李华
网站建设 2026/4/23 18:43:09

如何使用1688官方API进行订单同步?

一、前置准备&#xff08;必须完成&#xff09; 1. 开放平台基础配置 注册 / 登录&#xff1a;1688 开放平台&#xff0c;完成企业实名认证&#xff08;个人账号无订单接口权限&#xff09;。创建应用&#xff1a;在「应用管理」创建应用&#xff0c;获取app_key&#xff08;…

作者头像 李华