![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 85
多啦@不懂a梦
这个作者很懒,什么都没留下…
展开
-
树的子结构、二叉树的镜像、二叉树的深度、平衡二叉树
目录一、 树的子结构:二、二叉树的镜像:三、二叉树的深度:四、平衡二叉树:一、 树的子结构:1、题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构。2、解题思路:这个题比较简单,利用递归的方式就可以判断B是不是A树的子结构。3、实现代码: public boolean HasSubtree(TreeNode root1,TreeNode root2) { //当tree1和tree2都不为空的时候,才进行比较原创 2021-11-15 08:55:15 · 217 阅读 · 0 评论 -
斐波那契数列、跳台阶问题 、变态跳台阶问题、矩阵覆盖
目录一、斐波那契数列:二、跳台阶问题:三、变态跳台阶问题:四、矩阵覆盖:一、斐波那契数列:1、题目:现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39。2、什么是斐波那契数列?斐波那契数列指的是这样一个数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ……,可以观察到,从第3个数开始,每个数的值都等于前连个数之和。3、解题思路:这里可以使用递归的方法实现,但是递归的方式的时间复杂是输入规模的指数级别原创 2021-11-14 13:14:07 · 796 阅读 · 0 评论 -
布隆过滤器Bloom Filter简介
目录1、什么是布隆过滤器:2、算法实现步骤:3、布隆过滤器优缺点4、参数的选择:5、布隆过滤器的应用场景:5、如何解决布隆过滤器不支持删除的问题:背景:如果在平时我们要判断一个元素是否在一个集合中,通常会采用查找比较的方法,下面分析不同的数据结构查找效率:采用线性表存储,查找时间复杂度为O(N)采用平衡二叉排序树(AVL、红黑树)存储,查找时间复杂度为O(logN)采用哈希表存储,考虑到哈希碰撞,整体时间复杂度也要O[log(n/m)]当需要判断一个元素是否存在于海原创 2021-11-14 13:10:15 · 19480 阅读 · 1 评论 -
十大排序算法小结
目录一.算法说明二、算法主要思想:1、冒泡排序:2、插入排序:3、选择排序:4、希尔排序:5、归并排序:6、快速排序:7、堆排序:8、桶排序:9、计数排序:10、基数排序:一.算法说明1、这十种排序算法可以分为两大类:(1)非线性时间排序算法:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。这类算法包括:冒泡排序、插入排序、选择排序、希尔排序、归并排序、快速排序、堆排序。(2)线性时间..原创 2021-11-14 13:06:10 · 1490 阅读 · 0 评论 -
数据结构:树
目录1、二叉树:2、二叉查找树:3、平衡二叉树:3.1、平衡查找树之AVL树:3.2、平衡二叉树之红黑树:4、B树:5、B+树:6、B*树:7、Trie树:1、二叉树: 二叉树的定义:每个结点至多只有两个子节点的树。(1)满二叉树:叶子节点全部都在最底层,除了叶子节点,其余的每个节点都有两个的子节点。①一颗树深度为h,最大层数为k,深度与最大层数相同,k=h;②叶子数为2h;③第k层的结点数是:2^(k-1);④总结点数是:2k-1,且总节点数原创 2021-11-14 12:58:15 · 583 阅读 · 0 评论 -
排序算法:堆排序
目录一、堆:二、堆排序:一、堆:1、什么是堆:堆是一种特殊的树,它满足需要满足两个条件:(1)堆是一种完全二叉树,也就是除了最后一层,其他层的节点个数都是满的,最后一个节点都靠左排列。(2)堆中每一个节点的值都必须大于等于(或小于等于)其左右子节点的值。对于每个节点的值都大于等于子树中每个节点值的堆,我们叫作“大顶堆”。对于每个节点的值都小于等于子树中每个节点值的堆,我们叫作“小顶堆”。2、堆的实现:用数组来存储完全二叉树是非常节省内存空间的,因为我们不需要存储左右子原创 2021-11-14 12:50:17 · 12979 阅读 · 1 评论 -
排序算法:桶排序、计数排序、基数排序
目录一、桶排序:二、计数排序:三、基数排序:一、桶排序:1、算法原理:桶排序的核心思想就是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶排序完之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。2、图片演示:3、桶排序的时间复杂度为O(n):如果要排序的数据有 n 个,我们把它们均匀地划分到 m 个桶内,每个桶里就有 k=n/m 个元素。每个桶内部使用归并排序,时间复杂度为 O(k * logk)。m 个桶排序的时间复杂度就是 .原创 2021-11-14 12:45:13 · 10740 阅读 · 2 评论 -
排序算法:归并排序、快速排序
目录一、归并排序:二、快速排序:三、小结:归并与快排的区别:一、归并排序:1、工作原理:归并排序的采用分治思想,如果要排序一个数组,我们先把数组从中间分成前后两个部分,然后对前后两个部分分别进行排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。2、动图演示:3、Java代码实现:public class MergeSort { //归并排序: public void mergeSort(int[] a,int p,int r){ //递归终止条件 .原创 2021-11-14 12:40:44 · 184 阅读 · 0 评论 -
排序算法:冒泡排序、插入排序、选择排序、希尔排序
目录一、冒泡排序:二、插入排序:三、选择排序:四、希尔排序:一、冒泡排序:1、算法原理:冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系的要求。如果不满足就让它俩互换位置。一次冒泡会让至少一个元素移动到它应该在的位置,重复n次,就完成了n个数据的排序工作。2、算法描述:(1)比较相邻的元素。如果第一个比第二个大,就交换它们两个;(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数原创 2021-11-14 12:36:38 · 4125 阅读 · 0 评论 -
哪吒社区技能树16 张图带你搞懂 Java 数据结构,从此想不飘都难
目录一.数组二.链表三.栈四.队列五. 树1、普通树:对子节点没有任何约束。2、二叉树:每个节点最多含有两个子节点的树。 二叉树按照不同的表现形式又可以分为多种。3、二叉查找树:英文名叫 Binary Search Tree,即 BST,需要满足以下条件:4、B 树:一种对读写操作进行优化的自平衡的二叉查找树,能够保持数据有序,拥有多于两个的子树。5、B+ 树:B 树的变体。六.哈希表七.图今天我们来学一下数据结构方面的知识,对扎实 Java 的基本功非原创 2021-11-14 01:36:46 · 775 阅读 · 1 评论