数据结构与算法
文章平均质量分 72
szy2333
希望不只是入门
展开
-
剑指offer---关于树的题目解答---第二弹
平衡二叉树解题思路:平衡二叉树是什么?基于二叉树,但是左右子树的高度差不能超过1那么使用递归实现,首先每次求出左右子树的高度,如果左右子树的高度差小于等于1,继续进行递归,否则不是一个平衡树代码实现:public class IsBalanced_Solution { public boolean IsBalanced_Solution(TreeNode root...原创 2019-11-13 17:53:49 · 148 阅读 · 0 评论 -
剑指offer---关于树的题目解答---第一弹
目录二叉树的深度重建二叉树树的子结构二叉树的镜像对称的二叉树从上往下打印二叉树把二叉树打印成多行二叉搜索树的第k个结点作为一名程序猿,树这种结构是我们必须要掌握的,关于树的基本操作可以参考之前的博文https://blog.csdn.net/szy2333/article/details/88804090今天主要是对剑指offer中的树是相关题目进行整理...原创 2019-10-15 20:56:44 · 197 阅读 · 0 评论 -
带头节点链表(java语法实现)
链表是一种非连续,非顺序的存储结构,由一系列的节点组成,节点的链接顺序实现了数据元素的逻辑顺序相对于数组而言,在增删改操作上大大提高了效率(因为不会因为元素的位置变化引起一系列的变动),但同时又失去了随机查询的优点(因为必须进行遍历查询)单向带头结点链表的结构如下图,用头结点指向第一个节点,每个结点都有两个值value(结点的值)和next(用于连接下一个结点),利用next将所有节点连接...原创 2018-11-22 21:02:40 · 720 阅读 · 1 评论 -
希尔排序---改良的直接插入排序
希尔排序是对直接插入排序的改良,也是冲破时间复杂度为O(n^2)的第一批算法之一基本思想:将插入排序并不是一次性排完,而是分组进行插入排序。如一共有count个元素,设步长step1为count / 2, 即每走count / 2个元素分为一组,一共可以分为step1组,分别对每一组进行插入排序,得到新数组;此时缩短步长为step2=step1/2=count/2/2,每走step2个元素分为...原创 2018-10-18 20:25:26 · 238 阅读 · 0 评论 -
三大基本排序---插入,选择,冒泡
插入排序( 稳定排序,时间复杂度为O(n^2) )一堆数字,从左向右依次遍历,从第二个元素开始,与左边的一个元素相比较,插入合适的位置,然后继续遍历第三个元素,与左边两个元素比较并插入,然后遍历第四个,第五个... ...,一直到整个数组排序完成,示例图及代码如下: package baseSort;import java.util.Scanner;p...原创 2018-10-18 18:50:34 · 192 阅读 · 0 评论 -
快速排序---改良的冒泡排序
快速排序是对于冒泡排序的改良关于冒泡排序详见之前的博客:https://blog.csdn.net/szy2333/article/details/83118677基本思想:找一个数作为基数a,寻找这个基数的位置A,使位置A左边的元素的值均小于该基数a的值,该位置右边的元素的值军大于该基数a的值,然后以该基数a为准,将其左边的所有元素当做一个整体,并在这些元素中寻找一个基数b,寻找这个...原创 2019-03-17 23:15:45 · 302 阅读 · 1 评论 -
归并排序
核心思想:递归,无线分组对于一组需要排序的数字数组,首先寻找middle点,将这串数字分成两组,左边数组称为A,右边数组称为B,对于A,继续寻找middle点,将A分为两组,对于这两组数据继续使用同样的方式分组,如此循环,直至每个数组的元素仅有一个,对于数组B也是同样的方式。。。此时,需要被排序的数组被分为拥有元素均为1的数组,如下图绿色元素部分。由于数组都是被一分为二的,如下图所示,所以...原创 2019-03-18 13:04:13 · 140 阅读 · 0 评论 -
基数排序(图文并茂,你一定看得懂)
基本思想:将数组中的所有数按位进行分类,由于每一位数的大小都在0~9之间,因此创建下标为0~9的十个数组,根据需要对数进行存储图文过程:对于一组数字:8 9 6 11 23 1 9 18 10 213 33 7 87 91 180 35 52 716 106选择个位数相同的元素,并成为一个数组此时个位为i的数,分别别存储在下标为i的数组中...原创 2019-03-18 19:24:36 · 5116 阅读 · 7 评论 -
树---二叉树(创建,求高,大小,遍历)
树是一种十分常见且应用广泛的一种数据结构,其形式如下图 基本概念和描述如上图,结点层次从根开始定义,根的孩子是第二层,一共有四层,树中结点的最大层次称为树的深度或者高度,当前树深度为4。每个结点都有度,有几个子节点就有几个度,如根节点A度为2,D结点度为3,G,H,I,J度都为0。。。度为0的结点又被称为叶子结点或者终端结点,度不为0的结点成为非终端结点或者分支结点,树的度是树内...原创 2019-03-26 23:23:27 · 1298 阅读 · 1 评论