Java数据结构
文章平均质量分 90
算法
浪漫不死
记录一下学的东西……
展开
-
堆(Heap) 浅析
目录一、概念二、重要操作:向下调整 一、概念 堆逻辑上是一棵完全二叉树 堆物理上是保存在数组中 满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆,或者最大堆 满足任意结点的值都小于其子树中结点的值,则是小堆,或者小根堆,或者最小堆 堆的基本作用是,快速找集合中的最值 二、重要操作:向下调整 前提: 只有需要调整的位置不清楚,但其他位置已经满足堆的性质了。 array 代表存储堆的数组 size 代表数组中被视为堆数据的个数 index 代表要调整位置的下标 left 代表 index原创 2021-02-05 22:18:13 · 1513 阅读 · 1 评论 -
二叉树浅析
目录一、什么是二叉树二叉树的所有形态二、满二叉树三、完全二叉树四、二叉树的遍历4.1 树的创建4.2 深度优先搜索算法DFS前 / 中 / 后序遍历(递归实现)前 / 中 / 后序遍历(非递归实现)4.3 广度优先搜索算法BFS层序遍历 一、什么是二叉树 二叉树是一种特殊的树,那么特殊之处在哪呢: 每个结点最多只能有两个子结点(后文中我用孩子来代替子结点) 二叉树是有序树(孩子的前后关系才是我们需要注意的) 这里我们要知道左图中:B是A的左孩子;右图中:C是A的左孩子。 二叉树的所有形态原创 2021-01-16 21:52:26 · 298 阅读 · 0 评论 -
队列的浅析
目录一、Queue1、什么是队列(Queue)2、方法3、代码实现4、运行结果二、Deque1、什么是双端队列(Deque)2、方法3、代码实现4、运行结果 一、Queue 1、什么是队列(Queue) 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。 LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。 2、方法 offer,add 区别: 一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就原创 2020-11-19 17:43:41 · 253 阅读 · 0 评论 -
栈的浅析
目录1、什么是栈2、顺序存储栈的基本操作以及算法实现3、链式存储栈的基本操作以及算法实现4、代码实现5、运行结果 1、什么是栈 栈(Stack) 实现了一个先进后出 的数据结构。 是线性表的一种,限制仅在线性表的一端进行插入和删除操作。 允许插入和删除的一端称为栈顶(top),不允许插入和删除的一端称为栈底(bottom)。 你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。 当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。 入原创 2020-11-19 15:29:08 · 207 阅读 · 0 评论