![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Botto__Mmmm
这个作者很懒,什么都没留下…
展开
-
字典树基本实现及特性
字典树 Trie又称单词查找树或者键树,是一种树形结构。典型应用是用于统计和排序大量的字符串(不仅限于字符串),经常被搜索系统用于文本词频统计它的优点是:最大限度的减少无谓的字符串比较,查询效率比哈希表高。基本性质结点本身不存完整单词从根结点到某一结点,路径上经过的字符连接起来,为该结点所对应的字符串每个结点所有的子结点路劲代表的字符都不同核心思想Trie树核心思想为空间换时间利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。字典树的Java实现...原创 2020-08-08 13:40:49 · 183 阅读 · 0 评论 -
递归
递归 Recursion递归-循环通过函数体来进行的循环java递归模板public void recur (int level, int param) { if (level > Max_level) { //递归终止条件 return; } process(level,param); //处理当前层的逻辑 recur(level:level+1, new_param); //下探到下一层原创 2020-07-04 15:34:35 · 90 阅读 · 0 评论 -
LeetCode 105 前序和中序遍历构造二叉树
题目给前序遍历和中序遍历输出的数组构造成二叉树思路前序遍历序列中的第一个元素为根节点,构建成根结点找到该根节点在中序遍历序列中的位置,左侧即为左树的遍历序列,右侧为右树的遍历序列-左树递归,右树递归,构建二叉树代码 * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class原创 2020-06-02 14:14:01 · 113 阅读 · 0 评论 -
Map 映射
Map 映射Map是一个以键值对存储的接口图来自作者 Snow、杨Map特点数据结构里面包含键值对一个键对应一个值键是唯一的,一个键对应的值也是唯一的java中的MapHashtable (同步,慢,数据量小)HashMap(不支持同步,快,数据量大)Properties(同步,文件形式,数据量小)HashtableK-V 对,K和V都不允许为null。同步,多线程安全无序的适合小数据量主要方法void clear()将此哈希表清空,使其不包含任何键。原创 2020-05-29 14:07:31 · 651 阅读 · 0 评论 -
集合 HashSet,TreeSet,LinkedHashSet
集合特点确定性:对任意对象都能判定其是否属于某一个集合互异性:集合内的每一个元素都是不一样的,内容也差异无序性:集合内的顺序无关Java内的集合接口HashSet(基于散列函数的集合,无序,不支持同步)TreeSet(基于树结构的集合,可排序的,不支持同步)LinkedHashSet(基于散列函数和双向链表的集合,可排序的,不支持同步)HashSet基于HashMap实现的,可以容纳null元素add 添加一个元素chear 清除整个HashSet里元素contains原创 2020-05-27 15:01:47 · 128 阅读 · 0 评论 -
LeetCode 111 二叉树的最小深度
题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最小深度 2.算法思路1使用递归来算出二叉树的最小深度,深度优先DFS考虑这道题的关键是搞清楚递归结束条件叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点当 root 节点左右孩子都为空时,返回 1当 root 节点左右孩子原创 2020-05-25 10:56:24 · 90 阅读 · 0 评论 -
堆栈和队列的实现
堆栈栈(stack)又名堆栈,它是一种先进后出(FILO)的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。堆栈的数组存储由一个一维数组和一个记录栈顶元素位置top的变量组成元素插入数组的最后,所以top指向数组元素的最后位置。删除只要将top往前移动一位。继续插入的话原创 2020-05-22 13:26:21 · 184 阅读 · 0 评论 -
计数排序,桶排序,基数排序
计数排序计数排序的核心在于将输入的数据值转化为额外开辟的数组空间中的下标。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组B,其中第i个元素是待排序数组A中值与i相关的元素的个数。然后根据数组B来将A中的元素排到正确的位置。它只能对整数进行排序。算法思路首先找到待排序列的最大值和最小值,通过最大值最小值创建额外数组空间,长度为max-min+1遍历待排序列,将大小为i的元素放到与i原创 2020-05-20 17:43:42 · 128 阅读 · 0 评论 -
最大堆的操作及堆排序
什么是堆优先队列:取出的元素的顺序是按照元素的优先权(关键字)大小,而不是元素进入队列的顺序优先队列的完全二叉树表示堆的特性结构性:用数组表示的完全二叉树有序性:任一结点的关键字是其子树所以结点的最大值或最小值最大堆的插入将新增的结点放到堆最后的位置,然后与其父结点进行比较,比父节点大的,位置互换,然后继续往上比较,直到根结点。最大堆的删除将堆顶的元素删除,然后将最后的元素值放到根结点处。调整堆 变成最大堆最大堆的建立1 通过插入操作,将N个元素一个个相继插入到一个初始为空的堆中去原创 2020-05-19 20:05:56 · 1088 阅读 · 0 评论 -
归并排序的递归,非递归实现
归并排序和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间,O(n)的额外空间。该算法是采用分治法 。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;算法思路将长度为n的序列一分为二,分成子序列。子序列继续分,知道子序列只有一个数值,看做有序将有序的俩子序列归并成一个有序序列递归程序 public int[] mergeSort (int array[]) {原创 2020-05-18 15:18:57 · 126 阅读 · 0 评论 -
散列
散列一般想法理想的散列表数据结构是一个包含有关键字的具体固定大小的数组。我们把表的大小记作 TableSize ,通常习惯与让表从 00 到 TableSize−1变化。散列函数:每个关键字映射到从 00 到 TableSize−1 这个范围中的某个数,并且放到适当的存储地址中.最理想的情况是,运算简单并且任何两个不同的关键字映射到不同的单元。但是这是不可能的,因为单元的数目是有限的,而关键字的映射是会有很多可能。冲突:当两个关键字映射到同一个单元的时候。散列的俩项基本工作 :(1)计算位置:构原创 2020-05-14 22:23:25 · 195 阅读 · 0 评论 -
快速排序 java简单实现
快速排序思想分而治之的思想,在需要排序的数值中 选取一个主元,然后其他数值与这个主元进行对比,比主元小的放主元的左边,比主元大的放主元右边。之后对主元俩边的子集进行递归处理。这样每一次的主元都是到这个序列中正确的位置。不像简单排序一样,都是临时位置。主元的选择选取合适的主元可以提高效率。一般我们是选取序列中最左,中间,最右 三个位置的数值进行比较,选取大小中间的那个。然后最小放最左边,最大放最右边。当每一次选取的主元刚好是中间的数值,算法效率最快,时间复杂度达到O(NLogN)选好主元后,将主元放原创 2020-05-11 19:54:07 · 191 阅读 · 0 评论 -
AVL树的操作及调整成AVL树
AVL树是带有平衡条件的二叉查找树。一颗AVL树是其每个结点的左子树和右子树的高度最多相差1。进行插入操作时,怎么样把插入后的树调整成AVL树。.将影响平衡因子的结点为a四种情况1.对a的左儿子的左子树插入2.对a的右儿子的右子树插入3.对a的左儿子的右子树插入4.对a的右儿子的左子树插入1和2两种情况都是单选择,将a结点向下移,它的儿子向上移3和4是双旋转private in...原创 2020-05-10 20:04:35 · 199 阅读 · 0 评论 -
二叉树的操作及三种遍历递归非递归
二叉搜索树二叉搜索树的性质1.若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;2.若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;3.任意节点的左,右子树也分别为二叉搜索树;4. 没有键值相等的节点。代码表示二叉树public class BinTree{ // 二叉树类 public bintree left; publ...原创 2020-05-10 20:04:02 · 243 阅读 · 0 评论