yydcyy01 / DataStructure

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

数据结构 - 代码仓

大家好, 欢迎大家来到我数据结构代码仓。这个代码仓将不仅仅包含源代码,还将发布即将更新的相关内容[ ToDoList ]等等等等。使用Java语言实现.

大家可以下载、运行、测试、修改。如果你发现了任何bug,或者有意见或建议,欢迎和我联系:)

更多说明

  • 逐步完善

    有任何问题欢迎在QAF进行交流。

更多相关代码仓

XXXX, 代码仓: XXX

XXXX, 代码仓: XXX

XXXX, 代码仓: XXX

XXXX, 代码仓: XXX

XXXX, 代码仓: XXX

我的LeetCode题解代码仓:Play Leetcode

(注:以 Java 实现为主)

ToDoList

①代码整理

七 集合和映射 && 九 线段树 && 十三 红黑树 && 十四 哈希表

② 实现右侧跳转对应具体目录功能

③ 矫正完善

④ 我的 repo 都是感兴趣而学习实现的. 希望可以让更多人了解并享受到乐趣. "更多相关代码仓"内容丰富. 互相推荐

源码目录

一 简介 [无代码]
数据结构是简单的 / 明了的 / 有趣的 / 可无止境优化的. [无代码]
在定义基础上, 实现功能. 并逐步优化 / 针对具体题目可具体优化
二 不要小瞧数组 cn.yydcyy.array 章节Java源码
Demo : 使用Java中的数组 Java
实现 : 二次封装属于我们自己的数组 cn.yydcyy.array.Array Java
实现 : 向数组中添加元素 add(int , E) / addLast(E) / addFirst(E) Java
实现 : 数组中查询元素和修改元素 get(int) / getLast() / getFirst() Java
实现 : 包含,搜索和删除 find(E) / remove(int) / removeFirst() / removeLast() removeElement(E) Java
实现 :使用泛型 Array Java
实现 : 动态数组 resize(int) Java
实现 : 简单的复杂度分析 [无代码]
实现 : 均摊复杂度和防止复杂度的震荡 Java
三 栈和队列 cn.yydcyy.stack / cn.yydcyy.queue 章节Java源码
栈和栈的应用:撤销操作和系统栈 [无代码]
实现 :栈的基本实现 interface Stack Java
栈的另一个应用:括号匹配 Java
关于Leetcode的更多说明 Java
实现 : 数组队列 ArrayQueue Java
实现 : 循环队列 interface Queue Java
实现 : 循环队列的实现 LoopQueue Java
实现 : 数组队列和循环队列的比较 cn.yydcyy.test.ArrayQueueVSLoopQueue Java
待实现 : 没有size成员变量的循环队列 [整理中,敬请期待]
四 最基础的动态数据结构:链表 cn.yydcyy.list 章节Java源码
定义 : 什么是链表 LinkedList.Node Java
实现 : 在链表中添加元素 add(int / E) / addFirst(E) / addLast(E) Java
实现 : 使用链表的虚拟头结点 ListedList.dummyHead Java
实现 : 链表的遍历,查询和修改 contains(E) / set(int , E) / isEmpty() / Java
实现 : 从链表中删除元素 remove(int) / removeFirst() / removeLast() / removeElement(E) Java
实现 : 使用链表实现栈 list.LinkedListStack Java
实现 : 带有尾指针的链表:使用链表实现队列 list.LinkedListQueue Java
五 透过链表看递归 章节Java源码
查看 : Leetcode中和链表相关的问题 Java
测试 : 自己的Leetcode链表代码 Java
实现 : 递归基础与递归的宏观语意 cn.yydcyy.recursive.Sum 注解 Java
5-4 链表与递归 cn.yydcyy.recursive.ShowRecursive Java
递归运行的机制:递归的微观解读 cn.yydcyy.recursive.ShowRecursive.main [无代码]
动手 : 递归算法的调试 Java
补充 : 更多和链表相关的问题 [无代码]
待补充代码2 :单链表的递归实现 [整理中,敬请期待]
待补充代码2 : 斯坦福大学单链表的18个问题 PDF
[代码整理中,敬请期待]
待补充代码2 :双链表 [整理中,敬请期待]
待补充代码2 :循环双链表 [整理中,敬请期待]
待补充代码2 :数组链表 [整理中,敬请期待]
六 二分搜索树 注 : cn 为基本数据结构, com 包下为算法中的数据结构实现. 章节Java源码
探究 : 为什么要研究树结构 [无代码]
实现 :二分搜索树基础 com.yydcyy.bst.BSTBasic<K extends Comparable, V> Java
实现 :向二分搜索树中添加元素 insert(Key, Value) / insert(Node, Key, Value) Java
实现 :改进添加操作:深入理解递归终止条件 Java
实现 :二分搜索树的查询操作 search(Node, Key) Java
实现 :二分搜索树的前序遍历 BST2.preOrder() Java
实现 :二分搜索树的中序遍历和后序遍历 BST2.inOrder() / postOrder() Java
实现 :深入理解二分搜索树的前中后序遍历 [无代码]
实现 :二分搜索树前序遍历的非递归实现 Java
实现 :二分搜索树的层序遍历 BST2.levelOrder() Java
实现 :删除二分搜索树的最大元素和最小元素 BST2.minimun() / BST2.maximum() Java
实现 :删除二分搜索树的任意元素 BST2.remove(E) Java
了解: LeetCode 更多二分搜索树相关话题 [无代码]
补充代码1: 斯坦福大学Binary Tree相关问题 PDF
[代码整理中,敬请期待]
补充代码2: 斯坦福大学Tree List相关问题 PDF
[代码整理中,敬请期待]
补充代码3: 二叉树前中后序非递归遍历的经典实现 Java
补充代码4: 模拟系统栈前中后序遍历的非递归实现 玩转算法面试,第六章2,3小节
补充代码5: 二叉树Morris遍历前中后序实现 Java
补充代码6: 二分搜索树其他方法的非递归实现 [整理中,敬请期待]
补充代码7: 前驱和后继操作 [整理中,敬请期待]
补充代码8: floor和ceil操作 [整理中,敬请期待]
补充代码9: 节点内维护size的二分搜索树 [整理中,敬请期待]
补充代码10: rank和select操作 [整理中,敬请期待]
补充代码11: 节点内维护depth的二分搜索树 [整理中,敬请期待]
补充代码12: 节点内维护count的二分搜索树
(支持重复元素的二分搜索树)
[整理中,敬请期待]
补充代码13: 有重复元素节点的二分搜索树
(另一种支持重复元素的二分搜索树实现)
[整理中,敬请期待]
七 集合和映射 章节Java源码
集合基础和基于二分搜索树的集合实现 Java
基于链表的集合实现 Java
集合类的复杂度分析 Java
Leetcode中的集合问题和更多集合相关问题 Java
映射基础 Java
基于链表的映射实现 Java
基于二分搜索树的映射实现 Java
映射的复杂度分析和更多映射相关问题 Java
Leetcode上更多集合和映射的问题 Java
补充代码1: 更完整的基于二分搜索树的有序集合 [整理中,敬请期待]
补充代码2: 不同底层实现的有序集合对比 [整理中,敬请期待]
补充代码3: 更完整的基于二分搜索树的有序映射 [整理中,敬请期待]
补充代码4: 不同底层实现的有序映射对比 [整理中,敬请期待]
补充代码5: 多重集合 [整理中,敬请期待]
补充代码6: 多重映射 [整理中,敬请期待]
补充代码7: 基于映射实现的集合 [整理中,敬请期待]
八 堆和优先队列 章节Java源码
定义 : 什么是优先队列 [无代码]
实现 :堆的基础表示 com.yydcyy.heap.HeapSort Java
实现 :向堆中添加元素和Sift Up com.yydcyy.heap.MaxHeap_ShiftDown.shiftUp Java
实现 :从堆中取出元素和Sift Down com.yydcyy.heap.MaxHeap_ShiftDown.shiftDown Java
实现 :Heapify 和 Replace [整理中,敬请期待]
基于堆的优先队列 Java
Leetcode上优先队列相关问题 Java
Java中的PriorityQueue Java
待实现 :和堆相关的更多话题和广义队列 [无代码]
补充代码1: 普通线性结构和顺序线性结构实现的优先队列 [整理中,敬请期待]
补充代码2: 最小堆 [整理中,敬请期待]
补充代码3: 堆排序 com.yydcyy.heap.HeapSort [整理中,敬请期待]
补充代码4: 索引堆 com.yydcyy.heap.IndexMaxHeap [整理中,敬请期待]
补充代码5: 双向优先队列 [整理中,敬请期待]
补充代码6: 多叉堆 [整理中,敬请期待]
补充代码7: 二项堆 [整理中,敬请期待]
补充代码8: 斐波那契堆 [整理中,敬请期待]
补充代码9: 基于事件堆的粒子检测碰撞 [整理中,敬请期待]
九 线段树 章节Java源码
什么是线段树 [无代码]
线段树基础表示
创建线段树 Java
线段树中的区间查询 Java
Leetcode上线段树相关的问题 Java
线段树中的更新操作 Java
更多线段树相关的话题 [无代码]
补充代码1: 使用节点表示的线段树 [整理中,敬请期待]
补充代码2: 链式存储的线段树 [整理中,敬请期待]
补充代码3: 动态线段树 [整理中,敬请期待]
补充代码4: 线段树的懒惰传播 [整理中,敬请期待]
补充代码5: 二维线段树 [整理中,敬请期待]
补充代码6: 树状数组(Binary Index Tree) [整理中,敬请期待]
补充代码7: RMQ问题 [整理中,敬请期待]
十 Trie 章节Java源码
什么是Trie字典树 [无代码]
Trie字典树基础 Java
Trie字典树的查询 Java
Trie字典树的前缀查询 Java
Trie字典树和简单的模式匹配 Java
Trie字典树和字符串映射 Java
更多和Trie字典树相关的话题 [无代码]
补充代码1: 使用HashMap或者Array的Trie Java
补充代码2: TrieSet和TrieMap [整理中,敬请期待]
补充代码3: Trie的递归实现 [整理中,敬请期待]
补充代码4: 使用Trie删除元素与 [整理中,敬请期待]
补充代码5: 压缩字典树 [整理中,敬请期待]
补充代码6: 三分搜索Trie (Ternary Search Trie) [整理中,敬请期待]
补充代码7: 子串查询算法 [整理中,敬请期待]
补充代码8: 文件压缩算法 [整理中,敬请期待]
补充代码9: 模式匹配算法 [整理中,敬请期待]
十一 并查集 章节Java源码
定义 : 什么是并查集 com.yydcyy.unionfind.UF Java
实现 : Quick Find com.yydcyy.unionfind.UnionFind1#find Java
实现 : Quick Union com.yydcyy.unionfind.UnionFind2#unionElements Java
实现 :基于size的优化 com.yydcyy.unionfind.UnionFind3 详情见注解 Java
实现 :基于rank的优化 com.yydcyy.unionfind.UnionFind4 详情见注解 Java
实现 : 路径压缩 com.yydcyy.unionfind.UnionFind5 详情见注解 Java
了解 : 更多和并查集相关的话题 Java
十二 平衡树和AVL 章节Java源码
实现 :平衡树和AVL com.yydcyy.avl.AVLTree 详情见注解 [无代码]
实现 :计算节点的高度和平衡因子 AVLTree #getHeight() #getBalanceFactor() Java
实现 :检查二分搜索树性质和平衡性 具体对应 #add() 方法实现,详情见注解 Java
实现 :旋转操作的基本原理 详情见注解 Java
实现 :左旋转和右旋转的实现 #RightRotate #LeftRotate Java
实现 : LR 和 RL Java
实现 :从AVL树中删除元素 # removeMin Java
实现 :基于AVL树的集合和映射 [完成啦,整理中,敬请期待]
补充代码1: AVL树的优化 [整理中,敬请期待]
十三 红黑树 章节Java源码
红黑树与2-3树 [无代码]
2-3树的绝对平衡性 [无代码]
红黑树与2-3树的等价性 Java
红黑树的基本性质和复杂度分析 [无代码]
保持根节点为黑色和左旋转 Java
颜色翻转和右旋转 Java
红黑树中添加新元素 Java
红黑树的性能测试 Java
更多红黑树相关的话题 [无代码]
补充代码1: 红黑树中的删除最大元素 [整理中,敬请期待]
补充代码2: 红黑树中的删除最小元素 [整理中,敬请期待]
补充代码3: 红黑树中的删除任意元素 [整理中,敬请期待]
补充代码4: 基于红黑树的集合和映射 [整理中,敬请期待]
补充代码5: 右倾红黑树 [整理中,敬请期待]
补充代码6: 《算法导论》中红黑树的实现 [整理中,敬请期待]
补充代码7: 2-3 树的实现 [整理中,敬请期待]
补充代码8: 伸展树 Splay Tree [整理中,敬请期待]
十四 哈希表 章节Java源码
了解 : 哈希表基础 Java
了解 : 哈希函数 [无代码]
了解 : Java中的hashCode方法 Java
了解 : 链地址法 Seperate Chaining [无代码]
实现 : 实现哈希表 Java
分析 : 哈希表的动态空间处理与复杂度分析 Java
实现 : 哈希表更复杂的动态空间处理方法 Java
了解 : 更多哈希冲突的处理方法 [无代码]
笔记 : 基于哈希表的映射和集合 [整理中,敬请期待]
笔记 : 开放地址法解决哈希冲突 [整理中,敬请期待]
十五 小结 [无代码]
更多数据结构逐渐完善, 多加练习熟练使用, 能力有限, 若有错误多多指教, 感谢. 欢迎观看其他仓库及笔记. [无代码]

| 十六 待完成章节:B类树 | [更新中,敬请期待] | | | |

正在更新中,敬请期待:)

维护者

个人网站博客@yydcyy

GitHub 代码仓库@yydcyy

电子邮件yydcyy@qq.com

大家加油!:)**

About


Languages

Language:Java 100.0%