数据结构
文章平均质量分 91
数据结构
一个写湿的程序猿
练习两年半的程序猿。。。只因(ji)你太美!!!
初识不知文中意,再见已是文中人
展开
-
【数据结构】图代码实现、BFS、DFS、拓扑排序
图代码实现、BFS、DFS、拓扑排序图的基础代码图的基础接口顶点 Vertex边 Edge添加边 addEdge删除边 removeEdge添加点 addVertex删除点 removeVertex完整源码图的基础代码图的基础接口public interface Graph<V, E> { int edgesSize(); // 边的数量 int verticesSize(); // 顶点数量 void addVertex(V v); // 添加顶点 void add原创 2022-03-25 10:20:45 · 1178 阅读 · 0 评论 -
【数据结构】图的基础概念介绍
图的基础概念数据结构回顾图(Graph)有向图(Directed Graph)出度、入度无向图(Undirected Graph)混合图(Mixed Graph)简单图、多重图无向完全图(Undirected Complete Graph)有向完全图(Directed Complete Graph)有权图(Weighted Graph)连通图(Connected Graph)连通分量(Connected Component)数据结构回顾线性结构:数组、链表、栈、队列、哈希表(底层数组)树形结构:二叉树原创 2021-03-22 10:54:21 · 689 阅读 · 1 评论 -
【数据结构】并查集
并查集需求引出并查集并查集(Union Find)如何存储数据?接口定义元素的初始化UnionFind.java(abstract)Quick FindUnion 实现find 实现Quick Find 完整代码Quick UnionUnion 实现find 实现Quick Union 完整实现Quick Union – 优化优化 Union()Quick Union – 基于size的优化Quick Union – 基于rank的优化优化 Find()路径压缩(Path Compression)路径分裂(原创 2021-03-15 17:27:34 · 845 阅读 · 0 评论 -
【数据结构】优先级队列
优先级队列(Priority Queue)优先级队列简介普通队列与优先级队列对比:优先级队列应用场景:优先队列的底层实现二叉堆实现优先级队列代码优先级队列简介优先级队列也属于队列,因此也提供以下接口:public interface Queue<E> { int size(); // 元素的数量 boolean isEmpty(); // 是否为空 void enQueue(E element); // 入队 E deQueue(); // 出队 E front原创 2021-03-10 18:01:22 · 282 阅读 · 2 评论 -
【数据结构】二叉堆、TOP K 问题
二叉堆原理及实现、最小堆解决 TOP K 问题堆(Heap)堆的出现,思考?堆简介二叉堆(Binary Heap)获取最大值最大堆 — 添加最大堆 — 添加优化最大堆 — 删除replace最大堆 – 批量建堆(Heapify)自上而下的上滤自下而上的下滤效率对比二叉堆代码堆的基本接口-Heap.java抽象类 AbstractHeap.java二叉堆 BinaryHeap.java构建一个最小堆TOP K 问题堆(Heap)堆的出现,思考?设计一种数据结构,用来存放整数,要求提供 3 个接口:原创 2021-03-10 15:09:44 · 370 阅读 · 0 评论 -
【数据结构】映射 TreeMap,HashMap,LinkedHashMap 代码
映射 TreeMap,HashMap,LinkedHashMap 代码Map的接口定义 Map.java红黑树 RBTree 实现 TreeMapTreeMap 分析哈希表实现 HashMapHashMap 升级为 LinkedHashMap映射的特点:Map 在有些编程语言中也叫做字典(dictionary,比如 Python)Map 中的每一个 Key 是唯一的Map 中的每一个 Key 对应一个 Value类似 Set,Map 可以直接利用之前学习的链表、二叉搜索树(AVL树、原创 2021-03-08 17:37:49 · 518 阅读 · 3 评论 -
【数据结构】哈希表、哈希值计算分析
哈希表、哈希值计算分析引出哈希表哈希表(Hash Table)哈希冲突(Hash Collision)JDK1.8的哈希冲突解决方案哈希函数如何生成 key 的哈希值Integer 的哈希值计算Float 的哈希值计算Long 的哈希值计算那么, `^` 和 `>>>` 的作用是什么呢?为什么用 ^ 而不用 &、| 呢?Double 的哈希值计算String 的哈希值计算哈希值计算总结自定义对象的哈希值不重写hashCode重写hashCode重写hashCode方法和equals原创 2021-03-08 17:33:08 · 3045 阅读 · 4 评论 -
【数据结构】红黑树
目录红黑树介绍下面的这棵是红黑树吗?红黑树 与 4阶B树(等价性)红黑树 与 2-3-4树 等价转换红黑树基础代码红黑树介绍红黑树也是一种自平衡的二叉搜索树以前也叫做平衡二叉B树(Symmetric Binary B-tree)红黑树必须满足以下5 条性质节点是RED 或者BLACK根节点是BLACK叶子节点(外部节点,空节点)都是BLACKRED节点的子节点都是BLACK① RED节点的parent 都是BLACK② 从根节点到叶子节点的所有路径上不能有 2 个连续的RED节原创 2021-03-05 13:49:56 · 4636 阅读 · 12 评论 -
【数据结构】红黑树完整代码
红黑树完整代码二叉树 - BinaryTree.java二叉搜索树 - BSTree.java平衡二叉搜索树 - BBSTree.javaAVL树 - AVLTree.java红黑树 - RBTree.java二叉树 - BinaryTree.java二叉树类是抽取了其他二叉树(BST,BBST,RBTree)的公共的属性与方法,本身并没有具体用途,所以也不存在添加元素、删除元素等方法。@SuppressWarnings("unchecked")public class BinaryTree<原创 2021-03-05 11:58:42 · 1135 阅读 · 2 评论 -
【数据结构】B树
目录B树(B-tree、B-树)B树(B-tree、B-树)B树是一种平衡的多路搜索树,多用于文件系统、数据库的实现;仔细观察B树,有什么眼前一亮的特点?1 个节点可以存储超过 2 个元素、可以拥有超过 2 个子节点拥有二叉搜索树的一些性质平衡,每个节点的所有子树高度一致比较矮...原创 2021-02-02 13:46:00 · 446 阅读 · 2 评论 -
【数据结构】平衡二叉搜索树、AVL树
目录二叉搜索树缺点分析改进二叉搜索树平衡(Balance)理想平衡如何改进二叉搜索树?平衡二叉搜索树(Balanced Binary Search Tree)AVL树BST 对比 AVLTree继承 BSTAVL 树基础添加节点导致的失衡LL – 右旋转(单旋)二叉搜索树缺点分析当 n 比较大时,两者的性能差异比较大比如 n = 1000000 时,二叉搜索树的最低高度是 20,最高高度是 1000000;由此可见,二叉搜索树添加节点时可能会导致二叉搜索树退化成链表;而删除节点时也可能会导致原创 2021-02-02 13:45:24 · 507 阅读 · 1 评论 -
【数据结构】二叉搜索树
思考:在 n 个动态的整数中搜索某个整数?(查看其是否存在)假设使用动态数组存放元素,从第 0 个位置开始遍历搜索;平均时间复杂度: O(n)O(n)O(n)如果维护一个有序的动态数组,使用二分搜索;最坏时间复杂度:O(logn)O(logn)O(logn)、但是添加、删除的平均时间复杂度是O(n)O(n)O(n)使用二叉搜索树;添加、删除、搜索的最坏时间复杂度均可优化至:O(logn)O(logn)O(logn)二叉搜索树是二叉树的一种,是应用非常广泛的一种二叉树,英文简称为 BS.原创 2021-02-02 13:44:36 · 380 阅读 · 0 评论 -
【数据结构】基础二叉树、真二叉树、满二叉树、完全二叉树、二叉树的遍历
树的介绍简单的看一下树形结构:生活中的树形结构:树(Tree)的基本概念节点:上面的树形结构,是由若干个节点和节点之间,连接起来构成的结构,ABCDEFGH都是一个单独的节点。最上面的节点成为根节点。根节点:根节点是树层次结构中的最高节点。换句话说,根节点是没有任何父节点的节点。父节点和子节点:上面的B节点就是E和F节点的父节点,E和F节点就是B节点的子节点。兄弟节点:拥有相同父节点的节点称为兄弟节点,例如 E和F节点拥有相同的父节点B,所以两者称为兄弟节点。反之 E和G节点没有相同的原创 2021-02-02 13:44:15 · 2926 阅读 · 4 评论