![](https://img-blog.csdnimg.cn/20200724121540317.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
数据结构的基本知识
秃秃等等
一个小小学生!
展开
-
【数据结构】栈和队列之间的相互转换
1.用队列实现栈队列:先进先出;栈:先进后出;实现的方法有:添加元素、删除栈顶元素(删除队列的最后一个)、返回栈顶元素(返回队列的最后一个)、判断栈(队列)是否为空;import java.util.*;public class Main { //利用队列实现栈 Queue<Integer> queue = new LinkedList<>(); //添加元素 public void push(int value){原创 2020-08-04 23:12:16 · 480 阅读 · 0 评论 -
【数据结构】给定一个链表,判定链表是否有环,如果有,返回链表开始入环的第一个节点, 如果链表无环,则返回 null。
1.判断链表是否有环思路:使用快慢指针解决是否有环假设链表是一个有环链表,设置两个指针,slow,和fast让两个指针从前往后遍历,而且fast的遍历速度是slow的两倍,如果有环的话,遍历快的fast的不会为null,并且slow一定会追上fast,fast会和slow相等,过程如下图所示:fast走两步,slow走一步 代码: public boolean hasCycle(ListNode head) { Li...原创 2020-08-01 11:15:08 · 480 阅读 · 1 评论 -
【数据结构】栈和队列
注意:栈和队列都是一种特殊的线性表一.栈先进后出(First In Last Out FILO)后进先出(Last In First Out LIFO)栈顶:top 栈底:bottom栈顶指当前水平面的位置操作:1.初始化2.压栈、弹栈3.查找当前栈顶元素4.判断为空5.返回元素个数push 放入数据 压栈pop 删除数据 弹栈实现:链表...原创 2019-08-26 21:29:11 · 112 阅读 · 0 评论 -
【数据结构】二叉树
深度优先遍历:不撞南墙不回头必然要用到栈广度优先遍历:一层一层遍历必然要用到队列树形结构有序树:孩子的顺序重要的树无序树:孩子的顺序不重要的树二叉树:二叉树(binary tree)是一颗树,其中每个节点都不能有多余两个的儿子。1.度最大为22.有序树递归思想+递归方法二叉树的表示形式:链式表示:class Node{ int v...原创 2019-08-27 22:38:10 · 140 阅读 · 0 评论 -
【数据结构】二叉树的前序、中序、后序(用java实现)
他们都是一种深度遍历方式一:前序遍历 遍历方式为:根+左子树的前序+右子树的前序递归方法:利用递归方法,先打印根节点,再递归遍历左子树的前序,最后递归调用有右子树的前序,如果它的根节点为空时,直接返回null //前序遍历,法1 public static void preOrderTraversal(Node root){ if(ro...原创 2019-08-27 23:31:48 · 177 阅读 · 0 评论 -
【数据结构】二叉树的层次遍历(java实现)
层次遍历:从上到下再从左到右(树的广度优先,需要用到队列)1.把根放到队列中,2,循环直到队列为空1)把队首结点取出2)把队首结点的左右孩子取出(无得话,不插入) //层次遍历 public static void levelOrderTraversal(Node root){ if(root==null){ return;...原创 2019-08-28 17:04:28 · 2004 阅读 · 0 评论 -
(数据结构)已知二叉树的序列求它的形状(用java实现)
已知二叉树的序列求它的形状:有三种方法:1.根据前序+中序可以求出2.根据中序+后序可以求出3.只利用“前序”构建二叉树方法一:根据前序+中序可以求出思想:0)一定要先判断长度是否为0 1)前序遍历的第一个元素为二叉树的根结点,再在中序遍历中找根节点的位置leftCount 2)在前序遍历中根节点左边的的数组范围为:[1,leftC...原创 2019-09-04 15:52:28 · 707 阅读 · 0 评论 -
【数据结构】堆、二叉堆(java实现)
1.堆是一种完全二叉树:2.在堆中有两个重要的公式:已知parent下标,left=2*parent+1 right=2*parent+2已知child的下标(不分左右) parent=(child-1)/2;3.堆 1)逻辑上是一种完全二叉树 2)物理上是一个数组4.满足任意位置的值>=它的左右孩子的值 大堆反之 ...原创 2019-09-04 16:19:50 · 259 阅读 · 0 评论 -
【数据结构】7大基于比较的排序(插入排序、希尔排序、选择排序、堆排序)
排序:所谓排序,就是把一串有记录的数组,按照降序或者非降序进行排列(一般默认非降序)稳定性:能保护排序过程中相等的数据相对顺序不变稳定的排序:具备稳定性一.插入排序(直接插入排序)基本定义:直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。具体过程:利用减治...原创 2019-09-07 15:20:06 · 698 阅读 · 0 评论 -
【数据结构】7大基于比较的排序(冒泡排序、快速排序、归并排序)
五.冒泡排序思想:冒泡排序就是两个相邻的元素之间进行比较,把最大的冒到最后,一般是比较好理解的//冒泡排序 public static void bubbleSort(int [] array){ for(int i=0;i<array.length-1;i++){ boolean treated=true; ...原创 2019-09-07 16:57:26 · 338 阅读 · 0 评论 -
【 数据结构】Map接口和Set接口
Map和Set这两种java中集合框架接口学习1.使用场景:需要搜索的场景纯key模型:set背后的原理 判断集合中包含一个特定的元素,查找该元素是否已经在集合中了key-value模型:Map背后的原理 key和value的一组映射关系 ...原创 2019-09-22 14:31:30 · 194 阅读 · 0 评论