数据结构
文章平均质量分 68
栈、队列、二叉树、集合类、堆、排序、Map
每天靠近一点点
这个作者很懒,什么都没留下…
展开
-
【力扣】104. 二叉树的最大深度
一、题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn...原创 2020-03-31 21:21:13 · 160 阅读 · 0 评论 -
Java中常见的七大排序总结
一、直接插入排序原理:整个区间被分为:有序区间和无序区间;每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入。当待排序区间元素比较少或者接近有序时,直接插入的效率比较高。private static void insertSort(int[] array){ for(int bound=1;bound<array.length;bound++){ ...原创 2020-04-27 18:09:02 · 185 阅读 · 0 评论 -
Map的常用方法
Map的常用方法import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class TestMap { public static void main(String[] args) { Map<Integer, String> map = new Ha...原创 2020-04-22 22:47:25 · 250 阅读 · 0 评论 -
二叉树的前序、中序、后序遍历(非递归)
前序遍历:借助一个栈实现前序遍历。如果根节点非空,将根节点入栈。如果栈不为空, 循环遍历取栈顶元素,然后将该元素的右结点入栈,再将将该元素的左结点入栈(因为栈是后进先出)。直至栈为空,遍历结束。中序遍历:让cur从root出发,循环往左找,如果root!=null,将该结点入栈,直到root==null,遍历结束。取出栈顶元素top,打印栈顶元素,并将cur从当前栈顶元素的右子树出发,循环刚...原创 2020-04-07 20:38:09 · 89 阅读 · 0 评论 -
二叉树的前序、中序、后序遍历(递归)
二叉树主要是进行递归遍历。前序:根节点进行访问=>对左子树进行递归遍历=>对右子树进行递归遍历中序:对左子树进行递归遍历=>根节点进行访问=>对右子树进行递归遍历后序:对左子树进行递归遍历=>对右子树进行递归遍历=>根节点进行访问以前序遍历为例:根节点为A,打印A;递归访问A.left,打印B;然后递归访问B.left,先打印D;递归访问D.left...原创 2020-04-05 22:06:33 · 130 阅读 · 0 评论 -
对二叉树进行层序遍历
一、解题思路:创建一个空队列,使根结点入队列。循环遍历队列,取出队首元素,访问该元素。当前元素的左子树非空,就入队列;当前元素的右子树非空,也入队列。二、代码描述:public class LevelOrder { static class Node{ public char val; public Node left; public...原创 2020-04-03 18:06:00 · 143 阅读 · 0 评论 -
顺序表和链表的优缺点
一、顺序表:优点:顺序表的内存空间连续。尾插、尾删效率较高,时间复杂度是O(1)。支持随机访问,可以高效的按下标进行操作,时间复杂度是O(1)。缺点:在顺序表中间插入或删除元素时都涉及到元素的移动,效率较低,时间复杂度为O(N)。顺序表长度固定,有时需要扩容。二、链表:优点链表的内存空间不连续。如果知道要处理节点的前一个位置,则进行插入和删除的复杂度为O(1)......原创 2020-03-31 14:55:07 · 38913 阅读 · 4 评论 -
单链表插入、删除和查找操作
一、链表的定义:链表是一种物理存储结构上非连续存储结构。二、节点的表示:节点(Node)==>数据+补充信息三、单链表的插入:1、头插法2、尾插法3、任意位置插入class Node{ public int data; public Node next=null; Node(int data){ this.data=data; ...原创 2020-02-17 16:51:59 · 2254 阅读 · 0 评论 -
顺序表的增删查改操作(Java)
一、顺序表的概念:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储,在数组上完成数据的增删查改。二、顺序表的主要特点:支持随机访问能力(可以高效的按下标操作)尾插效率比较高(如果触发扩容,代价比较大)三、顺序表分类:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。四、顺序表的基本操作:1、顺序表的初始化:将未初始化...原创 2020-02-15 22:01:58 · 1032 阅读 · 0 评论