数据结构知识
关于基础数据结构知识的整理
HHHHH-Y
这个作者很懒,什么都没留下…
展开
-
二叉搜索树
一. 什么是二叉搜索树?二叉搜索树是一棵特殊的二叉树, 又称为二叉排序树, 其特性为:空树也是二叉搜索树若它的左子树不为空, 则左子树上所有节点值均小于根节点的值若它的右子树不为空, 则右子树上所有节点值均大于根节点的值二叉搜索树的左右子树也都是二叉搜索树二叉搜索树通过中序遍历可以得到一个有序的序列例如上图中, 中序遍历的结果为: 2 3 3 7 8 9 10 12 16 18二. 关于二叉搜索树的操作1. 增加一个节点根据二叉搜索树的性质, 增加节点的思路如下:假设在这棵二叉原创 2020-05-29 16:04:55 · 1243 阅读 · 0 评论 -
TopK问题
1. 什么是 TopK 问题?给一个无序的数组,长度为N, 输出最小(或最大)的K个数。2. TopK 问题分析思路在求解 TopK 问题时, 使用堆是最佳方法.若采用其他排序方法, 需要将数组全部重新排序一遍, 时间复杂度和空间复杂度会很大, 所以不建议采用其他排序方法注意事项:如果要输出前 k 个最小的元素, 应该建立一个大小为 k 的大根堆如果要输出前 k 个最大的元素, 应该建立一个大小为 k 的小根堆下面以输出前 k 个最小元素为例进行分析:例如: 有一组数据为 :[6, 1原创 2020-05-26 16:56:17 · 312 阅读 · 0 评论 -
数据结构中的七大基本排序算法
在开始叙述排序之前, 我想先说明一个概念:稳定性: 稳定性是评判一个排序方法的重要指标. 两个相等的数据, 如果经过排序后, 其相对位置不会发生改变, 那么我们称这个排序算法就是稳定的排序算法.如图所示, 这就是一个稳定的排序.1. 直接插入排序每次选择无序区间的第一个元素, 在有序区间内选择合适的位置插入.简单来说, 就像我们在打牌的时候, 在揭牌过程中整理牌的道理是一样的.直接插入排序代码如下:public static void insertSort(int[] array) {原创 2020-05-25 17:19:31 · 678 阅读 · 0 评论 -
二叉树
树是数据结构中最为重要的结构之一,尤其是二叉树。它与顺序表和单链表不同,它的结构更为复杂,运算更为抽象。1. 树1.1 概念树是一种非线性的数据结构,它是由 n (n >=0) 个有限节点组成的一个具有层次关系的集合。它之所以称为树,是因为它的结构像是一颗倒挂的树。节点的度: 一个节点的孩子节点的个数。如上图:A的度为3树的度:一棵树中,最大节点的度成为数的度。如上图:该树的度为3节点的层次:从根开始定义,根为第1层,根的子节点为第2层,以此类推树的高度/深度:树中节点的最大层次。原创 2020-05-23 09:26:51 · 340 阅读 · 1 评论 -
栈和队列
在学习数据结构的时候, 相信大家印象最为深刻的就是栈和队列了吧. 下面我就介绍一下栈和队列吧1. 栈(Stack)1.1 栈的概念栈是一种特殊的线性表, 它只允许在一端进行插入和删除的操作栈又分为栈顶和栈底对栈的所有操作都是在栈顶进行的.栈中的元素必须遵守先进后出的原则: 即先进栈的数据后出栈, 后进栈的数据先出栈.1.2 进栈和出栈1.3 栈的实现由于Java本身就已经封装好了一个 Stack 的类, 因此, 可以直接调用 Stack 中的方法.如果想要自己实现一个栈, 我们可以通原创 2020-05-14 16:58:01 · 257 阅读 · 0 评论