-数据结构-
创建哈夫曼树、计算带权路径长度、编码与译码
关于单链表的操作算法以及时间复杂度,例如:创建、查找、插入、删除等。
二叉树遍历:先序、中序、后序遍历
中缀表达式转换成后缀表达式、前缀表达式
图的最短路径以及长度
根据应用需求选择合适的链表类型
单向链表:
只有一个指向下一个节点的指针。
优点:单向链表增加删除节点简单。遍历时候不会死循环;
缺点:只能从头到尾遍历。只能找到后继,无法找到前驱,也就是只能前进。
适用于节点的增加删除。
双向链表:
有两个指针,一个指向前一个节点,一个后一个节点。
优点:可以找到前驱和后继,可进可退;
缺点:增加删除节点复杂,需要多分配一个指针存储空间。
顺序表插入删除平均时间复杂度
顺序表和链表的优缺点
1. 基于存取方式
顺序表可以顺序存取,也可以随机存取;链表只能从表头开始往后顺序存取元素。
2. 基于查找方式
顺序表按照位序查找的时间复杂度为 O(1);链表按照位序查找的时间复杂度为 O(n).
3. 基于插入和删除的方式
一般来说,顺序表的插入和删除需要挪动大量元素,时间复杂度为 O(n);链表需要从表头遍历找到待操作的元素位置的前驱,时间复杂度也为 O(n),但是链表在找前驱的位置时,主要是遍历操作,此外,链表在找到元素前驱的位置之后,插入和删除操作的时间复杂度只为 O(1),效率极高。所以链表的插入和删除操作效率显然要比顺序表的插入和删除操作要高!
二维数组元素地址计算
若已知入栈顺序,判断出栈序列
"先进后出"
循环队列队空队满条件
选择正确的图的遍历序列、拓扑排序
深度优先和广度优先
深度优先:
广度优先:(易错)
顺序:1-2-3-5-6-4-7
树转二叉树后的遍历序列
二叉树的性质
性质 1 : 在二叉树的第 i 层上至多有2 i-1个结点 (i≥1) 。
性质 2 : 深度为k的二叉树上至多含 2k-1 个结点(k≥1)。
性质 3 :对任何一棵二叉树,若它含有n个叶子结点、n2个度为的结点,则必存在关系式:n0= n2+1。
性质 4 :具有 n个结点的完全二叉树的深度为 (log2n的下取整) +1
性质 5 :若对含 n个结点的完全二叉树从上到下且从左至右进行1至n的编号,则对完全二叉树中任意一个编号为i的结点:
- (1) 若i=1,则该结点是二叉树的根,无双亲,否则,编号为i/2û的结点为其双亲结点;
- (2) 若2i>n,则该结点无左孩子,否则,编号为2i的结点为其左孩子结点;
- (3) 若2i+1>n,则该结点无右孩子结点,否则,编号为2i+1的结点为其右孩子结点。
两类特殊的二叉树:
1.满二叉树:
指的是深度为k且含有2k-1个结点的二叉树。
2.完全二叉树:
树中所含的 n个结点和满二叉树中编号为 1 至 n 的结点一一对应。
图的存储结构及特点
数据结构的基本概念及典型的算法时间复杂度计算
串的基本概念及算法时间复杂度
串是由零个或多个字符组成的有限序列,是一种特殊的线性表。串的基本操作包括插入、删除、替换、查找等。串的算法时间复杂度与串的长度有关,通常用大写字母N表示串的长度。以下是几种常见的串算法及其时间复杂度:
朴素模式匹配算法:在主串中从左到右逐个字符地比较子串,时间复杂度为O((n-m+1)*m),其中n为主串长度,m为子串长度。
KMP算法:通过预处理模式串,避免在主串中进行无用的比较,时间复杂度为O(n+m),其中n为主串长度,m为子串长度。