![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构重学
奔跑的废柴
卧久者行必远,伏久者飞必高
展开
-
数据结构--Java实现字典树前缀树
写这个的原因是今天的每日一题要用到然而我连前缀树都不会写于是写一下前缀树每日一题就不写了 嗯 没有时间class Trie { Trie[] child; boolean isEnd; public Trie() { child=new Trie[26]; isEnd=false; } public void insert(String word) { Trie node=this; .原创 2021-10-19 19:29:29 · 119 阅读 · 0 评论 -
Prim算法和Kruskal算法
代码待写,占坑总觉得应该写过,但我这确实没有,Leetcode里有题目用过,但是我找不到是哪题Prim算法描述:在一个加权连通图中,顶点集合V,边集合为E任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit.重复以下操作,直到所有点都被标记为visit:在剩下的点钟,计算与已标记visit点距离最小的点,标记visit,证明加入了最小生成树。Kruskal每次选择最短边。当选择每条边时,判断定义边的顶点是否在不同的数据集中。如果.原创 2021-09-15 13:06:04 · 98 阅读 · 0 评论 -
二分查找(左边界右边界)JAVA
public static int findLeft(int[] nums,int target){ int left=0; int right=nums.length-1; int mid=0; while(left<=right){ mid=(right-left)/2+left; if(nums[mid]>=target){ right=m...原创 2021-07-12 08:19:57 · 295 阅读 · 0 评论 -
平衡二叉树Java
参考:https://baijiahao.baidu.com/s?id=1651427207567199156&wfr=spider&for=pcpublic class AVLNode { public int data; public int depth; public int balance; public AVLNode parent; public AVLNode left; public AVLNode right; pu原创 2021-03-19 21:09:19 · 79 阅读 · 0 评论 -
数据结构——红黑树
待学,占坑为啥要学红黑树 不想学红黑树 但是面试总问红黑树参考:https://www.zhihu.com/question/312327402原创 2021-03-15 20:48:37 · 171 阅读 · 0 评论 -
二叉查找树 Java代码
代码插入如果树是空的,就返回一个含有该键值对的新结点。如果被查找的键小于根节点的键,我们会继续在左子树中插入该键,否则在右子树中插入该键。删除怎样删除一个拥有两个子节点的节点?在删除节点x后用它的后继节点填补它的位置。因为x有一个右子节点,因此它的后继节点就是其右子树中的最小节点。用4个步骤完成将x替换为它的后继节点的任务:...原创 2021-02-17 15:07:21 · 147 阅读 · 0 评论 -
二叉树的定义与性质
1.树相关的概念度:节点所拥有的子树的数目称为该节点的度 叶子节点的度为0。2.二叉树定义每个结点至多只有两颗子树,并且二叉树的子树有左右之分,其次序不能任意颠倒。性质性质1在二叉树的第i层上至多有2的i-1次方个结点。性质2深度为k的二叉树至多有2的k次方-1个结点。性质3对任意一棵二叉树,如果其叶子结点数为n0,度为2的结点数为n2,n0=n2+1。结点总数=n=n0+n1+n2结点总数=分支数+1。n=(n1+2*n2)+1所以 n0=n2+1性质4具有n个结点的原创 2020-12-31 15:38:52 · 285 阅读 · 1 评论 -
二叉树题目1
1.度数①总节点数n=n0+n1+n2,②总的链接数为n-1,n-1=n1+2n2,①-②得 1=n0-n2即n0 =n2+1;2.原创 2020-12-26 09:24:56 · 124 阅读 · 0 评论 -
时间复杂度
1.符号1.1 Θ记号1.2 O记号:上界1.3 Ω记号:下界2.原创 2020-12-18 15:20:34 · 85 阅读 · 0 评论 -
数据结构之散列表:含构造函数和冲突解决办法
1.散列技术散列技术:是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。散列函数:这种对应关系f称为散列函数,又称为哈希函数。散列表(哈希表):采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表。适合场景:查找与给定值相等的记录。不适合范围查找。冲突问题:两个关键字key1不等于key2,但是却有f(key1)=f(key2)。这种现象叫冲突。并把Key1和key2称为这个散列函数的同义词。2.散列函数的构原创 2020-11-26 14:35:53 · 676 阅读 · 0 评论 -
一篇解决常用排序算法 附JAVA代码
参考:https://mp.weixin.qq.com/s/teOGQlslb6aP4AQrx7TTzA以下例子都默认升序。稳定的意思:相同值的两元素的相对顺序,在排序前后不发生改变。1.O(n²)的排序算法1.1 冒泡排序概括:在每一轮[0…length-1]中,元素两两比较,使这一轮最大的数冒到这一轮的最后一个位置[length-1-i]。稳定性:稳定时间复杂度:外层循环length次,内层循环length-i-1次,总的时间复杂度为O(n²)空间复杂度:O(1) //冒泡排序原创 2020-11-23 17:06:29 · 245 阅读 · 0 评论 -
数据结构-二叉堆&堆排序Java
二叉堆堆排序二叉堆import java.util.Arrays;public class HeapOperator { public static void main(String[] args) { //上浮 int[] array0=new int[]{1,3,2,6,5,7,8,9,10,0}; upAdjust(array0); System.out.println(Arrays.toString(array0).原创 2020-11-19 09:36:18 · 139 阅读 · 0 评论