首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
数据结构
咸鱼Jay
创建于2022-11-26
订阅专栏
主要用于数据结构基础学习笔记
暂无订阅
共22篇文章
创建于2022-11-26
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
二十二、LinkedHashMap & HashSet & LinkedHashSet
1、LinkedHashMap 在HashMap的基础上维护元素的添加顺序,使得遍历的结果是遵从添加顺序的 假设添加顺序是37、21、31、41、97、95、52、42、83 删除度为2的节点node
二十一、哈希表(Hash Table)
1、前序 1.1、TreeMap分析 时间复杂度(平均) 添加、删除、搜索:O(logn) 特点 Key 必须具备可比较性 元素的分布是有顺序的 在实际应用中,很多时候的需求 Map 中存储的元素不需
二十、映射(Map)-实现TreeMap、TreeSet
1、映射(Map) Map 在有些编程语言中也叫做字典(dictionary,比如 Python、Objective-C、Swift 等) Map 的每一个 key 是唯一的 2、Map的接口设计 3
十九、集合Set
1、简介 集合的特点 不存放重复的元素 常用于去重 2.1. 存放新增 IP,统计新增 IP 量 2.2. 存放词汇,统计词汇量 2.3. ...... 2、代码实现 2.1、使用链表实现ListSe
十八、红黑树
1、红黑树的定义 红黑树也是一种自平衡的二叉搜索树 以前也叫做平衡二叉B树(Symmetric Binary B-tree) 红黑树必须满足以下 5 条性质 节点是$\color{red}{RED}$
十七、B树(B-tree、B-树)
1、B树(B-tree、B-树)介绍 了解B树是最终理解红黑树的关键 $\color{#00afef}{B树}$是一种平衡的$\color{#ed7d30}{多路}$搜索树,多用于文件系统、数据库的实
十六、AVL树
1、概念 AVL树是最早发明的自平衡二叉搜索树之一 AVL 取名于两位发明者的名字 G. M. Adelson-Velsky 和 E. M. Landis(来自苏联的科学家) Something in
十五、平衡二叉搜索树(Balanced Binary Search Tree)
1、二叉搜索树的复杂度分析 如果是安装7、4、9、2、5、8、11的顺序添加节点 如果是从小到大添加节点,则二叉搜索树退化成链表 比如 n = 1000000 时,二叉搜索树的最低高度是 20 2、退
十四、二叉搜索树--删除节点、clear和contains方法、代码重构
删除节点 -- 叶子节点 当删除节点是叶子节点,则直接删除 当叶子节点是左子树(node == node.parent.left) node.parent.left = null 2. 当叶子节点是右
十三、前驱节点(predecessor)&后继节点(successor)
前驱节点(predecessor) 前驱节点:中序遍历时的前一个节点 如果是二叉搜索树,前驱节点就是前一个比它小的节点 寻找前驱节点有三种情况: 后继节点(successor) 后继节点:中序遍历时的
十二、二叉树的遍历
简介 遍历是数据结构中的常见操作 把所有元素都访问一遍 线性数据结构的遍历比较简单 正序遍历 逆序遍历 根据节点访问顺序的不同,二叉树的常见遍历方式有4种 前序遍历(Preorder Traversa
十一、二叉搜索树(Binary Search Tree)
思考 在 n 个动态的整数中搜索某个整数?(查看其是否存在) 假设使用动态数组存放元素,从第 0 个位置开始遍历搜索,平均时间复杂度:O(n) 如果维护一个有序的动态数组,使用二分搜索,最坏时间复杂度
十、二叉树(Binary Tree)
1、树形结构 之前所讲的那些数组、链表、栈、队列等都是线性结构。 下面就是树形结构: 使用树形结构可以大大提高效率 2、树(Tree)的基本概念 2.1、有序树、无序树、森林 有序树 树中任意节点的子
九、双端队列(Deque)& 循环队列(Circle Queue)&循环双端队列
一、双端队列(Deque) $\color{#00afef}{双端队列}$是能在头尾两端$\color{#ed7d30}{添加、删除}$的队列 英文 deque 是 double ended queu
八、队列(Queue)
队列(Queue) $\color{#00afef}{队列}$是一种特殊的线性表,只能在$\color{#ed7d30}{头尾两端}$进行操作 队尾(rear):只能从$\color{#ed7d30}
七、栈(Stack)
$\color{#00afef}{栈}$是一种特殊的线性表,只能在$\color{#ed7d30}{一端}$进行操作 往栈中$\color{#ed7d30}{添加}$元素的操作,一般叫做$\color
六、单向循环链表&双向循环链表
单向循环链表 单向循环链表只需要在之前的单向链表基础之上进行修改,这里只需要修改添加和删除就可以了。 单向循环链表 – add(int index, E element) 添加需要考虑往第0位置上添加
五、双向链表
双向链表 此前介绍的链表,也叫做单向链表 使用双向链表可以提升链表的综合性能 修改之前的单链表的源码: 双向链表 – findNode(int index)方法 双向链表 – add(int inde
四、复杂度分析& 动态数组的缩容
复杂度分析 这里分析之前实现的ArrayList和LinkedList的增删改查的复杂度。 分析复杂度是要从下面三个方面分析 1. 最好情况复杂度 2. 最坏情况复杂度 3. 平均情况复杂度 Arra
下一页