news 2026/4/18 12:47:13

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/18 8:44:32

Python爬虫代理,选短效IP还是长效IP?

Python爬虫代理是网络数据采集中不可或缺的技术手段&#xff0c;尤其在高频请求、分布式任务或大规模抓取中&#xff0c;代理IP的选择对爬虫运行效率和成功率影响极大。那么问题来了&#xff1a;在实际应用中&#xff0c;应该选择短效IP还是长效IP&#xff1f;本文将结合Python…

作者头像 李华
网站建设 2026/4/18 1:31:02

31-建筑工地安全AI-安全帽与危险行为检测标注实战

&#x1f3d7;️ 引言&#xff1a;AI守护工地安全 建筑行业是高危行业之一。根据国家统计局数据显示&#xff0c;近年来我国建筑业年均发生安全事故超过千起&#xff0c;死亡人数常年位居工矿商贸事故死亡人数前三&#xff0c;其中高处坠落、物体打击、触电和机械伤害是主要致…

作者头像 李华
网站建设 2026/4/18 8:55:41

基于SpringBoot和Vue的在线招标系统的设计与实现

文章目录详细视频演示项目介绍技术介绍功能介绍核心代码系统效果图源码获取详细视频演示 文章底部名片&#xff0c;获取项目的完整演示视频&#xff0c;免费解答技术疑问 项目介绍 基于 SpringBoot 的在线招标系统是一款聚焦招投标全流程数字化管理的平台&#xff0c;整合 “…

作者头像 李华
网站建设 2026/4/18 5:15:05

【jieba词云实战】词云蒙版制作:从图片提取轮廓的三种方法

前篇&#xff1a;【Jieba实战】jieba WordCloud 生成中文词云 想让词云填满一只米老鼠的轮廓&#xff1f;关键在于制作一张合格的蒙版图片。 一、什么是蒙版&#xff1f; ​ WordCloud 的 mask 参数接受一张图片&#xff0c;用它来控制词云的填充区域&#xff1a; 白色像素&a…

作者头像 李华