news 2026/4/22 16:22:58

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/22 22:20:13

ClickHouse 参数设置说明文档

目录标题ClickHouse 参数设置说明文档一、概述环境信息二、配置方式方式一&#xff1a;通过 ClickHouseInstallation (CHI) 修改配置&#xff08;推荐&#xff09;1. 编辑 CHI 资源2. 修改 profiles 配置3. 当前实例配置&#xfffd;&#xfffd;例方式二&#xff1a;SQL 会话级…

作者头像 李华
网站建设 2026/4/18 14:37:56

春节在家必玩游戏推荐!手机巧借ToDesk玩3A

春节团聚时想和家人朋友共享游戏乐趣&#xff0c;却常受限于设备性能或游戏库存。如今&#xff0c;借助远程控制技术&#xff0c;即便身边只有手机&#xff0c;也能畅玩Steam上最新、最热门的游戏。2026年1月Steam销量榜显示&#xff0c;多人合作与高品质单机游戏持续占据主流&…

作者头像 李华
网站建设 2026/4/18 13:07:40

为什么 Spring 和 IDEA 都不推荐使用 @Autowired 注解?

大家在使用IDEA开发的时候有没有注意到过一个提示&#xff0c;在字段上使用Spring的依赖注入注解Autowired后会出现如下警告 Field injection is not recommended (字段注入是不被推荐的) 但是使用Resource却不会出现此提示 网上文章大部分都是介绍两者的区别&#xff0c;没有…

作者头像 李华
网站建设 2026/4/23 11:15:19

论文党必看!2026AI 写作工具全新榜单,效率直接封神

还在为论文选题秃头&#xff1f;为文献综述熬夜&#xff1f;为降重改到怀疑人生&#xff1f;2026 年 AI 论文写作工具已经进化到全流程闭环阶段&#xff0c;从选题到答辩一站式搞定&#xff0c;效率直接封神&#xff01;本文实测 20 款主流工具&#xff0c;筛选出性价比天花板…

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

拖延症福音:AI论文写作软件,千笔ai写作 VS 万方智搜AI,自考党必备!

随着人工智能技术的迅猛迭代与普及&#xff0c;AI辅助写作工具已逐步渗透到高校学术写作场景中&#xff0c;成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生&#xff0c;开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…

作者头像 李华