
数据结构
文章平均质量分 72
暗星涌动
我是陈冰安,Java 工程师,分享个人所得!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 与数据结构(10):并查集
并查集(Disjoint Set)是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常用于图论中,比如判断图中的连通性、最小生成树等问题。并查集有两个主要操作:查找(Find):查找元素所在的集合,通常用于判断两个元素是否在同一个集合中。合并(Union):将两个集合合并成一个集合,通常用于将两个不相交的集合合并为一个集合。并查集的基本实现方式是使用数组来表示每个元素所在的集合,数组的下标表示元素的编号,数组的值表示元素所在的集合的编号。原创 2023-05-19 19:57:12 · 690 阅读 · 0 评论 -
Java 与数据结构(9):字典树
Java面试题面试准备、常见面试题、面试经验、面试总结。原创 2023-05-18 22:30:38 · 695 阅读 · 0 评论 -
Java 与数据结构(8):堆
堆是一种特殊的树形数据结构,它满足以下两个条件:堆是一棵完全二叉树,即除了最后一层外,其他层都是满的,并且最后一层的节点都靠左排列。堆中每个节点的值都必须大于等于(或小于等于)其子节点的值,这种关系被称为堆序性。根据堆序性,堆可以分为两种类型:最大堆:每个节点的值都大于等于其子节点的值。最小堆:每个节点的值都小于等于其子节点的值。堆的常见操作包括插入元素、删除元素和查找最大/最小元素等。其中,插入元素和删除元素的时间复杂度为O(log n),查找最大/最小元素的时间复杂度为O(1)。原创 2023-05-18 19:10:16 · 498 阅读 · 0 评论 -
Java 与数据结构(7):哈希表
哈希表是一种常用的数据结构,它可以用来实现字典、索引等功能。哈希表通过哈希函数将键映射到数组下标,使得查找、插入和删除操作的时间复杂度为常数级别。哈希表由一个数组和一个哈希函数组成。数组用来存储键值对,哈希函数用来将键映射到数组下标。常见的哈希函数包括取模法、乘法散列法、一致性哈希等。在哈希表中,每个数组元素称为一个桶(Bucket),每个桶中存储的是键值对的链表。当需要查找一个键时,首先使用哈希函数计算出它对应的数组下标,然后在对应的链表中查找是否存在该键。如果存在,则返回对应的值,否则返回空值。原创 2023-05-17 21:29:18 · 816 阅读 · 0 评论 -
Java 与数据结构(6):图
图是一种非常重要的数据结构,在计算机科学和网络科学中被广泛应用。图由节点(顶点)和边组成,节点表示实体,边表示实体之间的关系。图可以用来描述各种复杂的关系,如社交网络、路线图、组织结构等。在计算机科学中,图被广泛应用于图算法、网络分析、图形数据库等领域。在网络科学中,图被用于描述社交网络、互联网拓扑结构、蛋白质相互作用网络等。图可以分为有向图和无向图两种类型。有向图中的边有方向,表示从一个节点到另一个节点的单向关系。无向图中的边没有方向,表示两个节点之间的双向关系。原创 2023-05-17 20:20:17 · 979 阅读 · 0 评论 -
Java 与数据结构(5):树
树是一种非线性数据结构,它由节点和边组成,每个节点可以有零个或多个子节点。树的一个节点称为根节点,它没有父节点;除了根节点外,每个节点都有且仅有一个父节点。树的节点可以有任意数量的子节点,但通常限制为最多有两个子节点的二叉树。如果一个节点没有子节点,则称为叶节点。树的高度是从根节点到最深叶节点的最长路径长度。树的常见应用包括文件系统、数据库索引、路由表等。树的一些常见类型包括二叉树、二叉搜索树、AVL树、红黑树等。原创 2023-05-16 21:03:32 · 548 阅读 · 0 评论 -
Java 与数据结构:队列
队列是一种线性数据结构,它可以看作是一种特殊的线性表。队列具有“先进先出”的特点,即先进入队列的元素先被取出。队列有两个基本操作:入队和出队,入队即将元素加入队列的末尾,出队即从队列的头部取出元素。队列可以用数组或链表来实现。使用数组实现的队列叫做顺序队列,使用链表实现的队列叫做链式队列。顺序队列需要预先分配一段连续的内存空间,因此当队列元素数量超过数组长度时,需要进行扩容操作。链式队列则不需要预先分配内存空间,可以动态地分配和释放节点。原创 2023-05-16 19:09:37 · 530 阅读 · 0 评论 -
Java 与数据结构(3):栈
栈是一种常见的数据结构,它可以在一端插入和删除元素,这一端被称为栈顶。栈的插入和删除操作遵循后进先出(LIFO)的原则,也就是说,最后插入的元素最先被删除。栈有两个基本操作:push 和 pop。push 操作将元素插入栈顶,pop 操作将栈顶元素删除并返回。除此之外,栈还有一些其他的操作,如查看栈顶元素、判断栈是否为空等。在 Java 中,可以使用自定义类或 Java 自带的 Stack 类来实现栈数据结构。这个示例中,Stack表示栈数据结构,包含一个数组和一个指向栈顶的指针;Main。原创 2023-05-15 20:50:15 · 684 阅读 · 0 评论 -
Java 与数据结构(2):链表
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含两部分:数据和指向下一个节点的指针。链表中的第一个节点称为头节点,最后一个节点称为尾节点,尾节点的指针指向 NULL。相比于数组,链表的优点是可以动态地分配内存,不需要预先知道存储元素的个数,而且插入和删除操作的时间复杂度为 O(1)。链表常见的类型有单向链表、双向链表和循环链表。单向链表每个节点只包含一个指向下一个节点的指针,而双向链表每个节点包含两个指针,一个指向前一个节点,一个指向后一个节点。循环链表的尾节点的指针指向头节点,形成一个环。原创 2023-05-15 19:39:42 · 987 阅读 · 0 评论 -
Java 与数据结构(1):数组
数组是一种线性数据结构,可以将一组相同类型的数据元素存储在顺序的连续内存空间中。每个元素都可以通过索引访问,索引通常从0开始。在计算机内存中,数组的每个元素都占用相同的存储空间,这使得元素的访问变得更加高效,时间复杂度为O(1)。数组的长度一旦确定,就无法改变。在使用数组时,需要注意数组的下标越界问题。如果下标超出了数组的范围,就会引发访问非法内存的错误。为了防止数组下标越界,我们需要在使用数组时谨慎操作。原创 2023-05-12 20:37:38 · 572 阅读 · 0 评论 -
【数据结构】笔试题_01
1、有如下语句序列:char str[10];cin>>str;当从键盘输入”I love this game ” 时,str 中的字符串是()A、"I love t...原创 2018-06-15 08:20:00 · 769 阅读 · 0 评论 -
【数据结构】二叉树的中序遍历
先序、中序、后序遍历二叉树的区别在于:根节点被访问的先后。先访问根节点再访问其左右子树,这是先序遍历;按照左子树、根节点、右子树的顺序访问的方式便为中序遍历;那么后序遍历,自然就是先访问...原创 2018-06-19 22:00:00 · 851 阅读 · 0 评论 -
【数据结构】二叉树的层次遍历
在上一篇文章【数据结构】二叉树的中序遍历 中我们学会了前中后序遍历,并着重讲述了中序遍历的思路及其实现代码(1 + 2),今天我们讲一讲二叉树的层次遍历。层次遍历,顾名思义,就是按层...原创 2018-06-25 11:07:42 · 323 阅读 · 0 评论 -
【数据结构】笔试题_02
1、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数?答案: 11 个第一种解法:二叉树的性质:度为 0 的节点数等于度为 2 的节点数 + 1第二种解法:所有...原创 2018-07-04 16:19:14 · 2364 阅读 · 0 评论 -
【 数据结构 】刷刷笔试题——03
1、用邻接表存储图所用的空间大小()A、与图的顶点数和边数都有关B、只与图的边数有关C、只与图的顶点数有关D、与边数的平方有关答案:A若无向图中有n个顶点e条边,则它的领接表需n个表头节...原创 2018-07-18 20:45:05 · 2184 阅读 · 0 评论 -
希尔排序,何不了解一下?
基本概念:希尔排序是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。希尔排序就是通过将元素数组划分为若干小组...原创 2018-08-27 18:22:00 · 289 阅读 · 0 评论 -
什么是堆?堆排序又是什么?
此堆非彼堆。常见的「 堆 」的概念是指一种数据按序排列的数据结构,只能在其一端对数据进行插入和删除操作。另一种就是「 堆内存 」了,其与「 栈内存 」的不同在于:1. 栈内存由操作系统分...原创 2018-08-31 08:28:21 · 1525 阅读 · 0 评论 -
做习题,学知识--线索二叉树
二叉树在线索化后,仍不能有效求解的问题是()A、先序线索二叉树中求先序后继 B、中序线索二叉树中求中序后继C、中序线索二叉树中求中序前驱D、后序线索二叉树中求后序后继因为有...原创 2018-09-04 15:43:08 · 926 阅读 · 0 评论 -
【算法】归并排序
壹基本概念:归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。排序过程:将序列分成 n 个有序的子序列,将相邻的有序子序列两两合并,并使合并后的序列...原创 2018-09-10 23:36:53 · 1222 阅读 · 0 评论 -
山竹来了,赶快抱紧这棵 “大树”
红黑树的概述:红黑树本质上是一种二叉查找树,但它在二叉查找树的基础上额外添加了一个标记(颜色),同时具有一定的规则。这些规则使红黑树保证了一种平衡,插入、删除、查找的最坏时间复杂度都为 ...原创 2018-09-16 21:09:52 · 153 阅读 · 0 评论 -
假期刷刷笔试题--04
1、已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,求该完全二叉树最多的结点个数。完全二叉树比满二叉树只是在最下面一层的右边缺少了部分叶结点,而最后一层之上是个满二叉...原创 2018-10-04 15:01:12 · 287 阅读 · 0 评论 -
【数据结构】一起来刷笔试题--05
点击题目下空白处可查看答案一、n个结点的线索二叉树上含有的线索数?线索二叉树中每个节点有两个指针域。二叉树中(除了根节点外)每个节点都有父结点,其与父结点的连线即为一条边。若二叉树有 n...原创 2018-11-08 13:33:28 · 939 阅读 · 0 评论 -
红黑树源码(含注释)
红黑树源码(含注释)#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>typedef int key_t;typedef enum color_t{ RED = 0, BLACK = 1}color_t;typede...转载 2018-11-05 23:14:28 · 310 阅读 · 0 评论 -
红黑树的快速实现
红黑树的概述:红黑树本质上是一种二叉查找树,但它在二叉查找树的基础上额外添加了一个标记(颜色),同时具有一定的规则。这些规则使红黑树保证了一种平衡,插入、删除、查找的最坏时间复杂度都为 O(logn)。红黑树的性质:1、每个节点要么是红色,要么是黑色;2、根节点永远是黑色的;3、所有的叶节点都是是黑色的(注意这里说叶子节点其实是上图中的 NIL 节点);4、每个红色节点的两个子节...原创 2018-09-14 15:12:37 · 1416 阅读 · 0 评论