数据结构基础复习笔记(一)

常见数据结构

1.栈

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算(先进后出)。这一端被称为栈顶,把另一端称为栈底。

2. 队列

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作(先进先出),和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

3. 单项链表

单链表有一个头节点head,指向链表在内存的首地址。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。链表按此结构对各节点的访问需从链表的头找起,后续节点的地址由当前节点给出。无论在表中访问那一个节点,都需要从链表的头开始,顺序向后查找。链表的尾节点由于无后续节点,其指针域为空,写作为NULL。

单链表更适合插入删除操作多的数据存储,而顺序结构则适合查找操作比较多的数据存储。

静态链表、循环链表、双线链表

4. 二叉树

a.根二叉树(Rooted Binary Tree):
有一个根结点,每个结点至多有两个孩子。
b.满二叉树(Full Binary Tree):
要么是叶子结点(结点的度为0),要么结点同时具有左右子树(结点的度为2)。
c.完全二叉树(Complete Binary Tree):
每层结点都完全填满,在最后一层上如果不是满的,则只缺少右边的若干结点。
d.完美二叉树(Perfect Binary Tree)
所有的非叶子结点都有两个孩子,所有的叶子结点都在同一层。即每层结点都完全填满。
e.无限完全二叉树(Infinite Complete Binary Tree):
每个结点都有两个孩子,结点的层数是无限的。
f.平衡二叉树(Balanced Binary Tree):
也称为AVL树,它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
注意:仅有前序和后序遍历,不能确定一个二叉树,必须有中序遍历的结果

5. 堆

最大堆的根结点中的元素在整个堆中是最大的;

最小堆的根结点中的元素在整个堆中是最小的。

6. 哈夫曼树

定义:给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。一般用于编码。

7.二叉排序树

a. 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
b. 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
c. 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
左、右子树也分别为二叉排序树;
d. 没有键值相等的节点
二分查找的时间复杂度是O(log(n)),最坏情况下的时间复杂度是O(n)(相当于顺序查找)

你可能感兴趣的:(数据结构基础复习笔记(一))