数据结构笔记
文章平均质量分 59
Double-V
这个作者很懒,什么都没留下…
展开
-
Java之LocalDate,LocalTime,LocalDateTime等时间
一、介绍 LocalDate:是一个不可变的日期时间对象,代表一个日期,通常被视为年-月-日;此类是不可变的并且是线程安全的。 LocalTime:是一个不可变的日期时间对象,代表一个时间,通常被视为时分秒。时间以纳秒精度表示;此类是不可变的并且是线程安全的。 LocalDateTime:是一个不变的日期时间对象,代表一个日期时间,通常被视为年-月-日-时-分-秒。也可以访问其他日期和时间字段,例如,一年中的某天,一周中的某天和一周中的某周。时间以纳秒精度表示;此类是不可变的并且是原创 2021-11-12 13:14:20 · 2625 阅读 · 1 评论 -
KMP字符串匹配算法思路解析
第一步:给出源字符串T和比较字符串P第一段字符aa b a a c a b a b c a c 第二段字符串P a b a b c 需要看字符串P中的字符与字符串T中的字符是否相匹配,如果按暴力法:从两个字符串的第一个字母开始比较,a-a,b-b,a-a,a-b,到第四位不匹配,将P后移一位,a-b,不匹原创 2021-11-08 15:33:07 · 150 阅读 · 0 评论 -
动态规划问题(DP)----背包
动态规划问题的应用动态规划可以用来解决背包问题,假设有一个背包,容量为4磅(最多装下4磅重的物品),现有如下物品,我用表格列出; 物品 总量 价格 吉他(G) 1 1500 音箱(S) 4 3000 电脑(L) 3 2000 要求:1.要求达到的目标为装入的原创 2021-11-05 19:49:03 · 201 阅读 · 1 评论 -
分治算法求解汉诺塔问题
1.什么是分治算法?分治算法,字面理解“分而治之”,就是把一个复杂的问题分成两个或者更多的相同或者相似的子问题,再把子问题分成更小的子问题...直到最后子问题可以直接简单求解,原问题的解即子问题的解的合并,这个算法是很多高效算法的基础,如排序算法,傅里叶变换。2.分治算法的基本步骤分解:将原问题分解为若干个规模较小,相互独立,与原问题相似相同的子问题解决:若子问题规模较小而容易被解决则直接解决,否则递归地解决各个子问题合并:将各个子问题的解合并为原问题的解3.汉诺塔的分治算法实现原创 2021-11-04 15:22:12 · 682 阅读 · 0 评论 -
类的内部成员:内部类
1.JAVA中允许将一个类A声明在另一个类B中,则类A就是内部类,B称为外部类2.内部类的分类:成员内部类 (静态、非静态) VS 局部内部类(方法内、代码块内、构造器内)3.成员内部类一方面,作为外部类的成员:>调用外部类的结构,>被static修饰,>可以被4种不同的权限修饰(static)另一方面,作为一个类:>在类里可以定义属性、方法、构造器>可以被final修饰,表示此类不能被继承。不用final,就可以被继承>可以被abstract修.原创 2021-11-03 17:11:14 · 177 阅读 · 0 评论 -
图的深度优先搜索和广度优先搜索
一、深度优先搜索(DFS)每次都在访问完当前节点后首先访问当前节点的第一个邻接节点,可以看出这是一个递归的过程。深度优先遍历算法步骤:1、访问初始尾结点v,并标记结点v已经访问2、查找结点v的第一个领接结点3、若w存在,则继续执行4,若w不存在,则回到第一步,将从v的下一个结点继续4、若w未被访问,对w进行深度优先遍历递归(即把w当做另一个v,然后进行步骤123)5、查找结点v的w邻接结点的写一个邻接结点,转到步骤3具体问题分析: .原创 2021-11-02 16:35:35 · 916 阅读 · 0 评论 -
B树、B+树的理解
B树的说明:B树的阶:节点的最多子节点个数,比如:2-3树的阶是3, 2-3-4树的阶是4;B-树的搜索,从根节点开始。对节点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子节点,重复,直到所对应的儿子指针为空,就已经是叶子节点。关键字集合分布在整棵树中,在叶子节点和非叶子节点都存放数据搜索都可能在非叶子节点结束其搜索性能等价于在关键字全集内做一次二分查找。B+树的说明:B+树的搜索与B树也基本相同,区别是B+树只有达到叶子节点才命中(B树可以原创 2021-11-01 11:39:51 · 138 阅读 · 0 评论 -
2-3树的原理图解
1、树的基本介绍2-3树是最简单的B-数结构,具有如下特点:1) 2-3树的所有叶子节点都在同一层(只要是B树都满足这个条件);2)有两个子节点的节点叫二节点,二节点要么没有子节点,要么有两个节点;3)有三个子节点的节点叫三节点,三节点要么没有子节点,要么有三个节点;4)2-3树是由二节点和三节点构成的树2、2-3树图解实例:将数列[16,24,12,32,14,26,34,10,8,28,38,20]构建成2-3树,并保证数据插入的...原创 2021-10-29 17:16:13 · 1154 阅读 · 0 评论 -
数组的复制
数组的复制方法我所查阅到的大概有四种,分别为使用 Arrays 类的 copyOf() 方法、copyOfRange() 方法、System 类的 arraycopy() 方法和 Object 类的 clone() 方法。这 几种方法的使用下面来分别介绍一下:其中Arrays类的copyOf() 方法是复制数组至指定长度,copyOfRange() 方法则将指定数组的指定长度复制到一个新数组中。1.使用 copyOf() 方法对数组进行复制其语法格式如下:Arrays.copyOf(dat原创 2021-10-29 09:17:49 · 2877 阅读 · 0 评论 -
平衡二叉树的判断,旋转,删除
1.平衡二叉树(AVL)的判断平衡二叉树要怎么判断,在判断之前我们需要了解一个重要概念-------树的高度和深度。树的高度,顾名思义,从下往上看;树的深度,顾名思义,从一棵树的上面往下看,这里要注意,根节点的深度和叶子节点的高度是从0开始。介绍了高度,引入如下满足条件:条件一:它必须是二叉查找树;(看之前文章有)(二叉查找树就是要满足左节点的值< 根节点的值< 右节点的值)条件二:每个节点的左子树和右子树的高度差至多为1;以上这颗树就不是平衡二叉树,右边叶.原创 2021-10-28 16:27:19 · 612 阅读 · 0 评论 -
二叉树节点删除
删除节点思路如下:节点删除一般可以分为以下三种情况:(1)删除叶子节点(4,7,13)(2)不删除叶子节点,删除带有一个叶子节点的树结点(14)(3)删除带有两个叶子节点的树节点(8,3,6)第一种删除方法最简单设立要删除的节点为targetNode;找到要删除的节点的父节点parent判断是父节点的左子树还是右子树根据节点删除方法:parent.left = null;parent.right = null第二种删...原创 2021-10-26 17:10:44 · 3981 阅读 · 0 评论 -
简单了解二叉排序树
首先,什么是二叉排序树(BST)?二叉排序树(Binary Sort Tree)具有如下性质的树如果左子树不为空,则左子树上所有的节点的值均小于它的根节点如果右子树不为空,则右子树上所有节点的值均大于它的根节点它的左右子树一定是二叉排序树如果想给一个无序数组中的数据排序,要如何排序?首先,要找到二叉树的根节点,这里以“8”作为本树的根节点,根据性质,“3”放在“8”的左子树上,“10”放在“8”的右子树上:“1”比“3”小,我们可以把“1”放在“3”的左子树处,“6.原创 2021-10-26 15:25:56 · 1176 阅读 · 0 评论 -
哈夫曼树的编码过程
什么叫哈夫曼树?给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。几个概念:路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1结点的权及带权路径长度:若将树中结点赋给..原创 2021-10-25 14:32:31 · 5842 阅读 · 1 评论 -
创建二叉树-代码实现
如图所示:这样一棵二叉树如何创建实现package com.company.tree;public class MyBinaryTree { // 测试,添加树 public static void main(String[] args) { MyBinaryTree root = new MyBinaryTree('A');// 根节点 root.makeLeftSubTree('B'); root.makeRightSubtree(原创 2021-10-22 10:41:36 · 620 阅读 · 1 评论 -
对二叉树的浅层理解
1.广义二叉树从表达式中我们可以看到:每当遇到字母,将要创立节点每当遇到“(”,表明要创建左孩子节点每当遇到“,”,表明要创建右孩子节点广义表中“(”的数量正好是二叉树的层数每当遇到“)”,表明要返回上一层节点树的基本术语有:若一个结点有子树,那么该结点称为子树根的“双亲”,子树的根称为该结点的“孩子”。有相同双亲的结点互为“兄弟”。一个结点的所有子树上的任何结点都是该结点的后裔。从根结点到某个结点的路径上的所有结点都是该结点的祖先。结点的度:结点拥有的子原创 2021-10-21 10:57:15 · 222 阅读 · 0 评论