
数据结构
文章平均质量分 57
大洼X
躺平和躺平?This is a question
展开
-
并查集(动图)
文章目录数组实现(quick find)树实现(quick union)优化基于节点总数的优化基于深度的优化路径压缩 数组实现(quick find) 树实现(quick union) 合并两个节点A和B,则是将A的根节点指向B(或B的根节点指向A). 优化 基于节点总数的优化 如图,此时要将节点8合并到节点9上,此时的节点9的深度将会变为4,即树的最大深度为4. 可以考虑基于节点数的优化方...原创 2019-11-28 11:45:24 · 339 阅读 · 0 评论 -
二分搜索树 前中后序(递归和非递归)和层序遍历(动图)
二分搜索树前序\中序\后序遍历理解 根据获取中间节点的不同,来分为前序\中序\后序,如图⇓ 先序遍历 -> 先打印中间节点,再依次打印左节点和右节点 中序遍历 -> 先打印左节点,再打印中间节点,最后打印右节点 后序遍历 -> 先依次打印左节点和右节点,再打印中间节点 二分搜索树前序\中序\后序遍历节点访问顺序图解 上图是一棵示例的二分搜索树,满足左节点<中间节点&...原创 2019-10-11 15:14:52 · 1873 阅读 · 0 评论 -
java HashMap、ArrayList动态扩容机制分析(均摊复杂度和复杂度振荡)
均摊复杂度 当数组A满了则会触发数据扩容,即创建一个新的数组B,将数组A中所有的元素复制到数组B中,这个操作的复杂度为O(n)。则可以理解为插入元素的复杂度为O(n),但是这样的理解不够准确,并不是每一个插入都会触发数组扩容,只有当插入第N+1个元素的时候才会。如图; 上图中扩容到2N为笔者任意设定,读者也可自定(至少要保证倍数大于1)。不论扩容的倍数为多少,均摊复杂度都为O(1)。 复杂度振荡...原创 2019-09-23 07:55:55 · 1267 阅读 · 1 评论 -
红黑树与2-3树的等价性->深入理解红黑树
2-3树定义 节点可以存放一个或者两个元素,称为2节点和3节点(这也是2-3树名称的由来),如下图 是一棵绝对平衡的二插树,下图示例就是一个2-3树 任意一个节点到叶子节点的深度是一致的 满足二分搜索树的基本性质,即 中序遍历的结果是有序 二节点 -> 左节点<中间节点<右节点,如图中的以52为根节点的子树 三节点 -> 左节点<中左节点<中间节点&...原创 2019-11-14 17:36:05 · 488 阅读 · 0 评论