
Java-数据结构
文章平均质量分 63
学习
Do next
❤♪(^∇^*)加油 ヾ(◍°∇°◍)ノ゙
展开
-
【数据结构】树
一 树形结构1.1概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后继树是递归定义的。转载 2021-08-23 21:04:13 · 96 阅读 · 0 评论 -
ArrayList和LinkedList
1.创建ArrayList和Linkedlist都实现了List接口2.ArrayListArrayList 内部封装了一个长度可变的数组优点1.空间连续2.支持随机访问性强,(get,set)缺点:1.中间或头插入删除时间复杂度O(N)2.增容的代价比较大扩容arrayList内部是动态数组,相比长度不变的数组,有很多优点。如果当前arraylist中元素数量大于初识容量(就会进行扩容,新的容量为旧的容量的1.5倍扩容方式扩容时,会以新的容量创建一个原数组的拷贝,将原数原创 2024-08-20 11:07:11 · 879 阅读 · 0 评论 -
【数据结构】优先级队列和堆
一、堆和java中的“堆”以及操作系统的"堆"原创 2021-07-20 10:55:00 · 198 阅读 · 0 评论 -
【数据结构】二叉树进阶面试题4:二叉树搜索树转换成排序双向链表
题目地址二叉搜索树:左子树<根节点,右子树>根节点例如特点:对二叉搜索树进行中序遍历,可以形成有序的序列分析:该题目的要求是:对二叉树进行中序遍历,形成一个双向链表原创 2021-07-20 10:56:33 · 105 阅读 · 0 评论 -
【数据结构】进阶面试题-二叉树的构建及遍历
1. 题目描述编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。2 思路1.首先要读入数据,判断读入的数据是否结束2.其次创建一棵树3.最后进行中序遍历...原创 2021-07-20 10:54:12 · 127 阅读 · 0 评论 -
【数据结构】判断一颗二叉树是完全二叉树还是满二叉树
满二叉树和完全二叉树的概念满二叉树:一个二叉树,如果每一个层的节点都达到了最大值,这个二叉树就是满二叉树。完全二叉树:1.对二叉树进行层序遍历2.遍历过程中针对二叉树的判定分成两个阶段来看待a)第一个阶段,要求每个节点必须有两个子树如果遇到某个节点,只有左子树或者没有子树,则进入第二阶段。如果遇到某个节点只有右子树,直接判断不是完全二叉树b)第二个阶段,要求每个节点必须没有子树如果发现某个节点有子树,则不是完全二叉树。当整个层序遍历完成后,也没找到反例,说明这个树就是完全二叉树原创 2021-03-30 22:24:52 · 733 阅读 · 0 评论 -
【数据结构.】二叉树基础面试题
二叉树基础面试1.二叉树的前序遍历(1:42)思路代码2.二叉树的中序遍历思路代码3.二叉树的后续遍历思路代码4.检查两棵树是否相同思路代码5.另一颗树的子树思路代码6.二叉树的最大深度思路代码7.判断一颗二叉树是否是平衡二叉树思路代码8.对称二叉树思路代码1.二叉树的前序遍历(1:42)思路代码2.二叉树的中序遍历思路代码3.二叉树的后续遍历思路代码4.检查两棵树是否相同思路代码5.另一颗树的子树思路代码6.二叉树的最大深度思路代码7.判断一颗二叉树是否是平衡二叉树原创 2021-03-25 15:15:26 · 200 阅读 · 0 评论 -
【数据结构】二叉树的层次遍历
思路借助队列实现,每次取队首元素出队列借助队列实现代码原创 2021-03-30 10:40:03 · 155 阅读 · 0 评论 -
【数据结构】二叉树性质及遍历
要想表示二叉树,得创建二叉树的节点如果是链表顺序表,就直接用一个for循环就能搞定遍历。由于二叉树是非线性结构,光用一个for循环不行。二叉树的基本操作:4种遍历方式1.先序遍历 :先访问(Visit)根节点,然后遍历左子树,然后遍历右子树。(到任何一个节点,都把节点当做跟,然后用规则进行编写)2中序遍历:先递归遍历左子树,然后访问根节点,然后递归遍历右子树。(把树投影下来就是中序遍历的顺序)中序遍历的结果,保持了原来左右子树的关系3.后序遍历:先遍历左子树,然后递归遍历右子树,最后访问根节..原创 2021-03-22 11:43:31 · 397 阅读 · 0 评论 -
【数据结构】用两个队列实现一个栈
取字符串的长度用s.length()~取数组的长度用s.length~请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)原创 2021-07-20 10:51:28 · 136 阅读 · 0 评论 -
【数据结构】栈和队列的面试题-括弧匹配
1.括号匹配 public static boolean isValid(String s) { //创建一个栈来存放左侧的括号 Stack<Character> sk=new Stack<>(); //遍历字符串 for(int i=0;i<s.length();i++){ //获取到字符串第i个元素,是一个字符 char c=s.charAt(i);原创 2021-03-11 14:54:35 · 138 阅读 · 0 评论 -
【数据结构】栈和队列
栈栈:是一种特殊的线性表,只可以在一端进行插入和删除的操作!具有先进后出的特性。用顺序表或链表尾插尾删或头插头删的原理来实现栈的入栈,出栈,取栈顶元素,不是说用顺序表和链表来存储栈元素,顺序表实现栈用尾插尾删~//标准库中也有"stack",//先用顺序表实现。public class MyStack { private int[] data=new int[100]; private int size=0; //入栈 public void push(int原创 2021-03-11 16:44:42 · 127 阅读 · 0 评论 -
【数据结构】链表 OJ 题训练
地址相等用“==”谁指向谁,用“=”7.在一个排序的链表中,存在重复的节点,删除该链表中重复的节点。重复节点不保留,返回链表的头指针。8.链表的回文结构(12321)思路1.给定一个单链表A,先把这个A拷贝一份,得到B2.然后把B逆置3.然后对比A和B是不是一样的单链表 public boolean chkPalindrome(ListNode A) { // write code here if(A==null){ return原创 2021-03-09 16:52:28 · 316 阅读 · 1 评论 -
【数据结构】链表的插入删除
链表插入 分两种情况1.插入到链表的头节点之前(新节点成为头结点)2.插入到链表的中间位置1.1中间插入(只变化next存放的地址)例如:把100这个节点插入到1和2之间此时需要先知道1(待插入位置的前一个节点)这个节点的引用定义一个prev引用,里面存放1的地址定义一个cur引用,里面存放新节点的地址cur.next=prev.nextprev.next=cur1.2头节点插入...原创 2021-08-14 20:57:55 · 690 阅读 · 0 评论 -
【数据结构】线性表----链表(LinkedList)
链表:处在不连续的内存空间上链表优点:解决顺序表的搬运,增加或者删除操作## 标题单向链表class Node{int val; //保存我们的元素Node next;//保存下一个元素的引用。}上面为单向链表:只能从上一个节点找到下一个节点双向链表class Node{int val; //保存我们的元素Node prev;//保存上一个元素的引用。Node next;//保存下一个元素的引用。}链表分类**单向链表 vs 双链表有原创 2021-02-04 17:25:00 · 219 阅读 · 0 评论 -
【数据结构】线性表(List)----自定义ArrayList的方法(顺序表)
import java.util.Arrays;public class MyArrayList { //因为顺序表中封装了数组,所以创建一个空的字符串数组 //属性 private String[] data = null; //当前顺序表中有效元素的个数 private int size = 0; //当前顺序表中中最大容纳元素个数,如果size超过了capacity,就需要扩容 private int capacity = 100;原创 2021-08-10 19:43:57 · 121 阅读 · 0 评论 -
【数据结构】线性表(List)----ArrayList(顺序表)
ArrayList的方法原创 2021-02-02 16:07:31 · 359 阅读 · 0 评论 -
【数据结构】数据结构
定义;组织一些数据元素:时间复杂度;程序运行的时间, 用来衡量一段程序执行快慢的指标。粗略的,定性的分析。– 方法:先找到一段代码,找到基本操作,判断基本操作执行的次数。(执行次数在衡量的时候往往涉及一个指标 问题规模N )。把这个表达式的最高项保留,最高项系数如果不是1,也就直接去掉。如果为常数,则直接为o(1)递归求阶乘递归:一个方法自己调用自己eg:目的是为了两个数相乘,计算成绩之前要知道两个数的值,递归完毕后,知道第一个数的值,接下来计算乘法。计算阶乘的时间复杂度原创 2021-01-29 17:04:50 · 166 阅读 · 0 评论