![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 62
shuaiZh
立志成为架构师的菜鸟程序员~
展开
-
数据结构之线段树
简介线段树是一种二叉查找树,它将一个区间划分为1个个单元,树的每个节点都是1个单元。如下图的树就是一颗区间树。性质对于线段树中的每一个非叶子节点[a, b],它的左节点为[a, (a+b)/2],右节点为[(a+b)/2+1, b]。线段数是平衡二叉树,子节点的个数等于整个区间的长度。实现建树在这里,我们使用数组来实现简单的线段树,树的结构如下。public class Se...原创 2018-12-16 21:27:20 · 173 阅读 · 0 评论 -
数据结构之Trie
简介Trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。——摘自维基百科基本性质简单来说Trie是利用字符串的公共前...原创 2018-12-01 12:51:30 · 305 阅读 · 0 评论 -
数据结构之AVL树
在上一篇博客中,向大家介绍了二叉搜索树这一种数据结构。下面,我们来看一个问题。假设现在有一棵空树,我们先向树中添加一个根节点5,然后再添加6,然后再按顺序添加7、8。我们来看下生成的二叉搜索树是什么样子。从上面的图中我们可以看出,二叉搜索树退化成了链表,大大的降低了查询效率。为了解决这个问题,我们引入一种新的数据结构——AVL树。概述AVL树是一种带有平衡条件的二叉搜索树。它的左右子树的高...原创 2018-11-25 19:31:09 · 198 阅读 · 0 评论 -
数据结构之二叉搜索树
在前面的几章中,介绍了几种线性数据结构,主要包含数组、栈、队列、链表等。从本节开始,给大家介绍树这种数据结构。在数据结构中,包括很多的树结构,像二叉树、二叉搜索树、线段树、字典树、红黑树等。本小节介绍的是二叉树和二叉搜索树,其余的树结构,会在后面的文章中再进行介绍。树在介绍二叉树之前,我们先准备些预备知识。首先来看先什么是树。一颗树可以看做是由根节点(root)和以及0个或多个...原创 2018-08-26 00:12:51 · 2225 阅读 · 1 评论 -
数据结构之链表
在前面的博客中,我们知道了数组这种数据结构的随机访问能力强,但是因为创建数组后,数组的容量时固定的。过大,容易造成空间浪费,过小,又不能满足存储需要。本篇文章给大家介绍另一种线性数据结构——链表。链表与数组不同,链表在物理存储上是非连续的。链表中的节点可以分为两部分,一个是存储的元素值,另一部分是指向下一个节点的指针。单链表单链表中的每个节点分为两个部分,一个是存储的数据值,另...原创 2018-07-25 19:30:17 · 368 阅读 · 0 评论 -
数据结构之数组
数组简介首先我们来简单的了解下什么是数组,数组是在内存中开辟出一段连续的空间用来存储数据,如下图所示。既然是用来存储数据,就涉及到寻址问题,我们来看下数组是如何寻址的。因为是一段连续的空间,那么只要知道首地址和数组下标就可以计算出要查询数组元素的内存地址。比如说数组的首地址0x0001,数组中每个元素占4个字节,那么下标为1的地址为0x0005。也就是因为这个原因,在数组中查询元素...原创 2018-07-12 16:21:35 · 2121 阅读 · 0 评论 -
数据结构之队列
队列简介队列简单来说就是一种允许再一段进行插入,再另一端进行删除操作的线性表,就像排队取票一样。插入的一段我们称之为队尾,删除的一端我们称之为队首。队列具有FIFO(先进先出)的特性。队列的结构图如下所示。队列的简单实现使用上一篇文章的动态数组实现了队列,代码非常简单,不多讲了。public class ArrayQueue { private Array<E&原创 2018-07-17 18:03:41 · 26706 阅读 · 3 评论 -
数据结构之栈
栈的简介栈简单来说就是一种只允许在一端进行插入和删除操作的线性表,这一端我们通常称作栈顶,而另一端称作栈底。插入和删除也被称为入栈和出栈。因为栈只允许在一端进行操作,所以它具有FILO(先进后出)的特性,栈的结构图如下所示。栈的简单实现使用上一篇文章的动态数组实现了栈,代码非常简单,不多讲了。public class ArrayStack<E>{ pr...原创 2018-07-17 16:54:50 · 199 阅读 · 0 评论 -
数据结构之堆
堆就是用数组实现的二叉树,所有它没有使用父指针或者子指针。堆分为两种,最大堆和最小堆,两者的区别在于排序方式上。堆的常用方法:构建优先队列支持堆排序快速找出一个集合中的最小值(或者最大值)最大堆...原创 2018-12-24 20:43:53 · 357 阅读 · 0 评论