![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
@衡
这个作者很懒,什么都没留下…
展开
-
【数据结构】:hashmap如何根据value值查找对应的key值
import java.util.HashMap;import java.util.Map;public class Main{ public static void main(String[] args) { HashMap<Integer,Integer> map=new HashMap<>(); //key---value map.put(1,2); map.put(2,3); map.原创 2021-04-15 01:22:39 · 1950 阅读 · 1 评论 -
【数据结构】:排序----希尔排序
思路:希尔排序是插入排序的优化版,采用分组插排的方式,每次使得组内有序,随着组数的变小,待排数组将变得更加有序,直至组数为1的时候,整个数组将变成一个有序的数组,算法结束。public static void shellSort(long[] array){ int gap=array.length/2; while (true){ insertSortGap(array,gap); if (gap==1){原创 2021-04-11 10:37:54 · 91 阅读 · 0 评论 -
【数据结构】:排序----选择排序
思路:将待排数组分成两部分,无序区间和有序区间。每次从无序区间中最大的元素与无序区间最后一个元素进行交换,直至整个数组有序。起始:无序部分:[0,array.length)有序部分:[array.length,array.length)最终:无序部分:[0,0)有序部分:[0,array.length)例:[9,5,2,7] public static void selectSort(long[] array){ for (int i = 0; i < arr原创 2021-04-11 01:17:07 · 82 阅读 · 0 评论 -
【数据结构】:排序----冒泡排序
思路:将待排序分成两部分,无序和有序两部分 ,每次将无序部分中最大的元素放进有序部分的第一个位置。起始:无序部分:[0,array.length)有序部分:[array.length,array.length)最终:无序部分:[0,0)有序部分:[0,array.length)例:[9,5,2,7] public static void bubbleSort(long[] array){ for (int i = 0; i < array.length-1; i++原创 2021-04-11 00:10:57 · 81 阅读 · 0 评论 -
【数据结构】:排序----插入排序
思路:将待排数组分为两部分,有序区间和无需区间[有序区间,无序区间]每次把无序区间中的第一个数取出来,同有序区间的元素进行比较,将其插入到有序区间里合适的位置,使得有序区间插入一个元素后依然有序。重复此操作,直至整个数组变成有序的。例:[9,5,2,7]public static void insertSort(long[] array){ for (int i = 0; i < array.length-1; i++) { long key=arra原创 2021-04-10 23:28:03 · 68 阅读 · 0 评论 -
【数据结构】:二叉树的层序遍历
岑序遍了原创 2021-04-07 23:34:00 · 185 阅读 · 1 评论 -
【数据结构】:排序的稳定性
概念:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。例:常见的的不稳定排序算法:堆排序、快速排序、希尔排序、选择排序常见的稳定排序算法:冒泡排序、插入排序、归并排序...原创 2021-04-07 22:37:19 · 817 阅读 · 0 评论 -
【数据结构】:二叉树的非递归遍历
先序遍历:中序遍历:后序遍历:package 二叉树的非递归遍历;import java.util.Stack;/** * @version 1.0 * @Author XuHeng * @Date 2021/4/1 23:12 */class TreeNode { char val; TreeNode left; TreeNode right; public TreeNode(char val) { this.原创 2021-04-01 23:56:27 · 208 阅读 · 0 评论 -
【数据结构】:二叉树的递归遍历
二叉树的遍历(递归)二叉树的遍历:是指沿着某条搜索路线,依次对树中每个节点做一次且仅做一次访问。N:代表根结点L:代表根结点的左子树R:代表根结点的右子树正在上传…重新上传取消NLR:先序遍历,又称作前序遍历,访问顺序为:根结点-->根的左子树-->根的右子树转存失败重新上传取消LNR:中序遍历,访问顺序为:根的左子树-->根结点-->根的右子树转存失败重新上传取消LRN:后序遍历,访问顺序为:根的左子树-->根的右子树-->根结点原创 2021-03-27 23:37:57 · 988 阅读 · 0 评论 -
【力扣】:二叉树(一)
二叉树相关题记:144. 二叉树的前序遍历解:class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list=new ArrayList<>(); if(root!=null){ list.add(root.val); List<Integer> leftsu...原创 2021-03-25 23:23:59 · 132 阅读 · 0 评论 -
【数据结构】:求二叉树的深度
public class TreeNode { char val; TreeNode left; TreeNode right; public TreeNode(char val) { this.val=val; }}public class BuildTree { public static TreeNode buildTree() { // 先构造结点 TreeNode a = new Tr...原创 2021-03-23 23:25:27 · 409 阅读 · 0 评论 -
【数据结构】:求二叉树的的总结点个数
上文(https://blog.csdn.net/qq_44292334/article/details/115145148)我们学习二叉树的建立,以及如何求二叉树的叶子结点个数本篇文章我们学习如何求二叉树 :总的结点个数class TreeNode { int val; TreeNode leftChild; TreeNode rightChild; public TreeNode(int val) { this.val=val; }原创 2021-03-23 22:43:09 · 4199 阅读 · 1 评论 -
【数据结构】:二叉树的建立,如何求叶子结点的个数
二叉树基本概念:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点+左子树的二叉树+右子树的二叉树组成。二叉树的特点:1、每个节点最多有两棵子树,即二叉树的结点的度不大于2。2、二叉树的子树有左右之分,其子树的次序不能颠倒,因此二叉树是有序树。树的度:一棵树中,最大的节点的度称为树的度叶子结点:度为0的结点称为叶节点,如上图的:1、3 、5 为叶节点双亲节点或父节点:若一个结点含有子节点,则这个结点称为其子节点的父节点,如上图的:4是2和6的父节点孩子..原创 2021-03-23 22:25:30 · 3677 阅读 · 1 评论 -
【数据结构】:二叉树的非递归前(先)序遍历
给你二叉树的根节点 root ,返回它节点值的前序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com...原创 2021-03-21 22:02:30 · 119 阅读 · 0 评论 -
【双向链表】:java实现双向链表
package java_03_06;// 双向链表的节点, 需要记录 next 和 prevclass Node { int val; Node prev = null; Node next = null; public Node(int val) { this.val = val; }}// 实现一个双向链表public class myLinkedList { // 记录头结点的位置. private No.原创 2021-03-07 23:58:06 · 89 阅读 · 1 评论 -
【链表】:输入一个链表,输出该链表中倒数第k个结点。
题目描述输入一个链表,输出该链表中倒数第k个结点。示例1输入1,{1,2,3,4,5}返回值{5}public class Solution { //计算链表的长度 public int getLength(ListNode head){ int len=0; for(ListNode cur=head;cur!=null;cur=cur.next){ len++; }原创 2021-03-03 23:43:55 · 132 阅读 · 1 评论 -
【数据结构】:顺序表
顺序表的增删改查:class MyArrayListIndexOutOfException extends RuntimeException { public MyArrayListIndexOutOfException(String messge) { super(messge); }}public class MyArrayList { private String[] data=null; private int size=0; pr.原创 2021-02-04 17:41:38 · 61 阅读 · 0 评论