
数据结构
JQW_YNU
无
展开
-
求二叉树中叶子结点的个数
@Override public int getheight() { return this.getHeight(root); } private int getHeight(Node root) { if(root.leftValue==null&&root.rightValue==null) { return 1; }else { ...转载 2018-11-27 22:30:27 · 1144 阅读 · 0 评论 -
求二叉树的深度,前序遍历,中序遍历,后序遍历,节点个数,是否为空,查找某一个节点,测试方式
package com.bjsxt.tree; import java.util.ArrayList;import java.util.Deque;import java.util.LinkedList;import java.util.Queue; /** * * @author Administrator * */public class BinaryTree im...转载 2018-11-27 20:06:36 · 259 阅读 · 0 评论 -
二叉树的接口
2.定义二叉树接口 public interface BinaryTree { /** * 是否空树 * @return */ public boolean isEmpty(); /** * 树结点数量 * @return */ public int size(); /** * 获取二叉树的高度 * @return */ public in...转载 2018-11-27 18:44:56 · 172 阅读 · 0 评论 -
二叉树结点
定义二叉树结点类:/** * 链式二叉树结点 * @author Administrator * */public class Node { int value; Node leftChild; Node rightChild; public Node(int value) { this.value = value; } public Node(int va...转载 2018-11-27 18:44:21 · 178 阅读 · 0 评论 -
二叉树遍历概念和算法
二叉树的遍历:遍历(Traverse):就是按照某种次序访问树中的所有结点,且每个结点恰好访问一次。也就是说,按照被访问的次序,可以得到由树中所有结点排成的一个序列。树的遍历也可以看成是人为的将非线性结构线性化。这里的“访问”是广义的,可以是对结点作各种处理,例如输出结点信息、更新结点信息等。在我们的实现中,并不真正的“访问”这些结点,而是得到一个结点的线性序列,以线性表的形式输...转载 2018-11-27 18:14:15 · 200 阅读 · 0 评论 -
树的概念
树树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。树的结点包含一个数据元素及若干指向其子树的若干分支。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或简称为树根。我们可以形式地给出树的递归定义如下:树(tree )是 n(n ≥ 0)个结点的有限集。它1) 或者是...转载 2018-11-27 13:25:03 · 211 阅读 · 0 评论 -
2014年第五届蓝桥杯JAVA/JAVA++程序设计本科B组决赛 出栈次序(结果填空)
出栈次序X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。路边有个死胡同,只能容一辆车通过,是临时的检查站,如图【p1.png】所示。X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。如果车辆进入检查站和离开的次序可以任意交错。那么,该车队再次上路后,可能的次序有多少种?为了方便起见,假设检查...原创 2018-12-02 22:35:21 · 310 阅读 · 0 评论 -
一 . 暴力破解与实用性优先
做题目时:能枚举就枚举,能逆向就逆向,先试探一个解。1. 猜年龄【问题描述】美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”...原创 2018-12-03 11:26:24 · 776 阅读 · 0 评论 -
搭积木+寒假作业+方格填数 DFS解法
蓝桥杯比赛关于 DFS 算法总结方法以及套路分析首先我们来看几道java A组的题目,都是同一年的哦!!!搭积木小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9。搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。最后搭成4层的金字塔形,必须用完所有的积木。下面是两种合格的搭法: 0 1 2 3 4 56 ...原创 2018-12-04 21:36:21 · 582 阅读 · 0 评论 -
二叉树的存储结构
二叉树的存储有顺序存储结构和链式存储结构其中顺序存储结构造成了很大的资源浪费。转载 2018-11-28 12:33:03 · 190 阅读 · 0 评论 -
图的存储方式(数组+链表的存储方式)
转载 2018-11-28 12:33:49 · 896 阅读 · 0 评论 -
图的概念
图(graph)是一种网状数据结构,图是由非空的顶点集合和一个描述顶点之间关系的集合组成。 其形式化的定义如下:Graph = ( V , E )V = {x| x∈某个数据对象}E = {<u , v>| P(u , v)∧(u,v∈V)}V 是具有相同特性的数据元素的集合,V 中的数据元素通常称为 顶点(Vertex) ),E 是两个顶点之间关系的集合。P(u ,...转载 2018-11-28 12:38:39 · 204 阅读 · 1 评论 -
蓝桥-深度优先求连通性
给定一个方阵,定义连通:上下左右相邻,并且值相同。可以想象成一张地图,不同的区域被涂以不同颜色。输入:整数N, (N<50)表示矩阵的行列数接下来N行,每行N个字符,代表方阵中的元素接下来一个整数M,(M<1000)表示询问数接下来M行,每行代表一个询问,格式为4个整数,y1,x1,y2,x2,表示(第y1行,第x1列) 与 (第y2行,第x2列) 是否连通。连通输出...原创 2018-12-03 19:12:45 · 340 阅读 · 0 评论 -
第八届蓝桥杯国赛Java b组 填字母游戏
小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说:“我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了”。K大师在纸上画了一行n个格子,要小明和他交替往其中填入字母。并且:1. 轮到某人填的时候,只能在某个空格中填入L或O2. 谁先让字母组成了“LOL”的字样,谁获胜。3. 如果所有格子都填满了,仍无法组成LOL,则平局。小明试验了几次都输了,他很惭愧,希望...原创 2018-12-03 17:29:59 · 547 阅读 · 0 评论 -
蓝桥杯历届试题——取球游戏(博弈论)
取球游戏今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。 我们约定: 每个人从盒子中取出的球的数目必须是:1,3,7或者8个。 轮到某一方取球时不能弃权! A先取球,然后双方交替取球,直到取完。 被迫拿到最后一个球的一方为负方(输方) 请编程确定...转载 2018-12-03 13:51:59 · 543 阅读 · 0 评论 -
java Connections使用研究
1.java list统计某个元素出现的次数 Collections.frequency(list,"1") (字符串也能使用) Collections.frequency(list,1)2.排序Collections.sort(list);字符串会根据前缀字母顺序排序,数字会根据从小到大排序但不能对数组进行排序,如果要对数组中的元素进行排序,需要使用Arrays,这主要...原创 2018-12-07 17:38:05 · 1372 阅读 · 0 评论 -
【蓝桥杯】最小公倍数和最大公约数
最大公约数就是递归求的: 最小公倍数= a*b/gcd(a,b)原创 2018-12-03 12:21:03 · 377 阅读 · 0 评论 -
蓝桥杯-第七届省赛javaA组-搭积木
搭积木小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9。搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。最后搭成4层的金字塔形,必须用完所有的积木。下面是两种合格的搭法:01 23 4 56 7 8 903 17 5 29 8 6 4 请你计算这样的搭法一共有多少种?请填表示总数目的数字。注意:你提交...转载 2018-12-03 11:29:48 · 255 阅读 · 0 评论 -
回溯法总结+四个小例题(装载问题,01背包,n后,最大团,m着色)
目录 回溯法的基本策略 回溯法的基本策略 回溯法的解空间 回溯法基本思想 回溯法解题步骤 递归回溯和迭代回溯 子集树和排列树 装载问题 01背包问题回溯法求解 n后问题 图的最大团问题 图的m着色问题 回溯法的基本策略策略:回溯法在问题的解空间树中,按深度优先搜索,从根节点出发搜索解空间。算法搜索至某一结点时,先判断该结点是否包含问题的解,如果肯定不包含,...转载 2018-11-28 19:53:00 · 1705 阅读 · 0 评论 -
图的遍历(深度优先遍历和广度优先遍历)
图的遍历就是从图中某个顶点出发,按某种方法对图中所有顶点访问且仅访问一次。图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础深度优先遍历(depth-first search):类似于树的先根遍历,是树的先根遍历的推广 (可以采用递归和借助栈的非递归方式实现)广度优先遍历(breadth-first search):遍历类似于树的层次遍历,它是树的按层遍历的推广(借助队列 ...转载 2018-11-28 12:39:24 · 723 阅读 · 0 评论 -
二叉树
二叉树:每个结点的度均不超过 2 的有序树,称为 二叉树(binary tree) 。与树的递归定义类似,二叉树的递归定义如下:二叉树或者是一棵空树,或者是一棵由一个根结点和两棵互不相交的分别称为根的左子树和右子树的子树所组成的非空树。由以上定义可以看出,二叉树中每个结点的孩子数只能是 0、1 或 2 个,并且每个孩子都有左右之分。位于左边的孩子称为左孩子,位于右边的孩子称为右孩...转载 2018-11-27 13:34:26 · 216 阅读 · 0 评论 -
Java中栈和队列的类
Stack类:栈类 过时 public class Stack<E> extends Vector<E>Queue:队列类Deque:双端队列(栈操作建议使用) public class LinkedList<E> extends AbstractSequentialList<E> implements List&...转载 2018-11-27 13:09:32 · 230 阅读 · 0 评论 -
7届蓝桥杯第6题方格填数
方格填数如下的10个格子 +--+--+--+ | | | |+--+--+--+--+| | | | |+--+--+--+--+| | | |+--+--+--+(如果显示有问题,也可以参看【图1.jpg】)填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?请填写表示方案数目的...原创 2018-12-02 13:35:27 · 418 阅读 · 0 评论 -
数据结构与算法中的排序
什么是排序排序(sorting) )的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。其确切的定义为:假设有n个数据元素的序列{R 1 , R 2 , … , R n },其相应关键字的序列是{K 1 , K 2 , … , K n },通过排序要求找出下标 1 , 2 , … , n的一种排列p 1 , p 2 , … , p n ,使得相应关键字满足如下的非递减(或非...转载 2018-11-29 13:10:32 · 212 阅读 · 0 评论 -
哈希表的查找
引入哈希表前面查找方法共同特点:通过将关键字值与给定值比较,来确定位置。效率取决比较次数。理想的方法是:不需要比较,根据给定值能直接定位记录的存储位置。这样,需要在记录的存储位置与该记录的关键字之间建立一种确定的对应关系,使每个记录的关键字与一个存储位置相对应。 1.哈希表的结构和特点 hashtable 也叫散列表 特点:快 很快 神奇的快 结构...转载 2018-11-29 13:09:35 · 603 阅读 · 0 评论 -
二叉树,平衡二叉树,红黑树,B-树、B+树、B*树的区别
二叉查找/搜索/排序树 BST (binary search/sort tree)或者是一棵空树;或者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;(2)若它的右子树上所有结点的值均大于它的根节点的值;(3)它的左、右子树也分别为二叉排序树。注意:对二叉查找树进行中序遍历,得到有序集合。平衡二叉树(Self-balancing...转载 2018-11-29 13:07:31 · 631 阅读 · 0 评论 -
二分查找思想(使用递归和不适用递归的思想)
public class BinarySearch { public static void main(String[] args) { int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; System.out.println(searchLoop(array, 101)); } /** * 循环二分查找,返回第一次出...转载 2018-11-29 13:05:06 · 277 阅读 · 0 评论 -
图中求最短路径的算法
在许多应用领域,带权图都被用来描述某个网络,比如通信网络、交通网络等。这种情况下,各边的权重就对应于两点之间通信的成本或交通费用。 此时,一类典型的问题就是:在任意指定的两点之间如果存在通路,那么最小的消耗是多少。这类问题实际上就是带权图中两点之间最短路径的问题。 问题:计算V1到V8的最短路径最短路径1:段数最少的最短路径:换乘最少 使用广度优先遍历即可类似问题:编写...转载 2018-11-29 12:28:20 · 1147 阅读 · 1 评论 -
算法设计中常用的规律性数据类型转换
案例一:1/2错误写法:double a= 1/2 正确写法:double a=1/2*1.0; 答案为0.5 案例二:字符转int '2'转为2 正确写法:int a= '2'-'0'案例三:int转字符串正确写法:String a = 2+""................类似的还有很多,总之就是...原创 2018-11-28 21:33:05 · 279 阅读 · 0 评论 -
快速排序原理理解
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大...原创 2018-06-14 20:09:45 · 884 阅读 · 0 评论 -
7届蓝桥杯第8题 -四平方和
四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号表示乘方的意思)对于一个给定的正整数,可能存在多种平方和的表示法。要求你对4个数排序:0 <= a <= b ...原创 2018-11-29 19:36:51 · 474 阅读 · 0 评论 -
队列(queue)的定义,队列的存储结构
队列定义队列(queue )简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。在队列中把插入数据元素的一端称为 队尾(rear) ),删除数据元素的一端称为 队首(front) )。向队尾插入元素称为 进队或入队,新元素入队后成为新的队尾元素;从队列中删除元素称为 离队或出队,元素出队后,其后续元素成为新的队首元素。由于队列的插...转载 2018-11-26 22:48:25 · 412 阅读 · 0 评论 -
Java中双链表的查找、插入、删除等
双向链表结构和单向链表的区别:最后一个结点的链接地址上,单向链表是null,而双向链表是表头的链接地址。即双向链表的head和last互相指向示意图表头为空 head之前的节点是last=50这个节点 ,head之后的节点是first=10这个节点last之前是40这个节点,last之后是head这个头节点 双向链表删除节点删除之后 ind...转载 2018-11-26 22:45:16 · 591 阅读 · 0 评论 -
数据结构中的线性表及其结构
线性表(linear list) ) 线性表是n个类型相同数据元素的有限序列,通常记作(a 0 , a 1 , …a i-1 , a i , a i+1 …,a n-1 )。1.相同数据类型在线性表的定义中,我们看到从a 0 到a n-1 的n个数据元素是具有相同属性的元素。比如说可以都是数字,例如(23, 14, 66, 5, 99);也可以是字符,例如(A, B, C, … ...转载 2018-11-26 22:28:03 · 210 阅读 · 0 评论 -
双向链表与循环链表
双向链表单链表的一个优点是结构简单,但是它也有一个缺点,即在单链表中只能通过一个结点的引用访问其后续结点,而无法直接访问其前驱结点,要在单链表中找到某个结点的前驱结点,必须从链表的首结点出发依次向后寻找,但是需要Ο(n)时间。为此我们可以扩展单链表的结点结构,使得通过一个结点的引用,不但能够访问其后续结点,也可以方便的访问其前驱结点。扩展单链表结点结构的方法是,在单链表结点结构中新增加一...转载 2018-11-26 21:51:53 · 435 阅读 · 0 评论 -
单链表的讲解:单链表的原理,添加、删除元素
单链表及其节点链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此每个单元至少有两个域,一个域用于数据元素的存储,另一个域是指向其他单元的指针。这里具有一个数据域和多个指针域的存储单元通常称为 结点(node)一种最简单的结点结构如图所示,它是构成单链表的基本结点结构。在结点中数据域用来存储数据元素,指针域用于指向下一个具有相同结构的结点。因为只有一个指针结点,称为单链表 ...转载 2018-11-26 17:31:25 · 1382 阅读 · 0 评论 -
空间复杂度
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。 计算方法: ①忽略常数,用O(1)表示 ②递归算法的空间复杂度=递归深度N*每次递归所要的辅助空间 ③对于单线程来说,递归有运行时堆栈,求的是递归最深的那一次压栈所耗费的空间的个数,因为递归最深的那一次所耗费的空间足以容纳它所有递归过程。如:1 int a;2 int b;3 int c;4 printf("%...原创 2018-11-26 17:21:35 · 271 阅读 · 0 评论 -
算法分析(时间复杂度和空间复杂度)
算法分析(时间复杂度和空间复杂度)对于一个给定的算法需要做两项分析,第一就是证明算法的正确性,第二就是计算算法的复杂度。算法的复杂度包括时间复杂度和空间复杂度。1 度量算法效率的方法共存在两种方法:事后统计法和事前分析估计算法。事后统计法:先将算法实现,然后输入适当的数据运行,计算算法的时间复杂度和空间复杂度。事前分析估算法(渐进复杂度):对算法所消耗资源的一种估算方法。比较常用...原创 2018-11-26 16:39:49 · 2410 阅读 · 0 评论 -
7届蓝桥杯第10题 -压缩变换
压缩变换小明最近在研究压缩算法。他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比。然而,要使数值很小是一个挑战。最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面出现的数字很大可能是刚出现过不久的数字。对于这种特殊的序列,小明准备对序列做一个变换来减小数字的值。变换的过程如下:从左到右枚举序列,每枚举到一个数字,如果这个数字没有出现过,刚将数字变换成...原创 2018-11-29 20:17:55 · 339 阅读 · 0 评论