写出二叉树的二叉链表和三叉链表的存储结构_初试攻略丨计算机考研中《数据结构》知识点总结,硬核!...

961f5515c5f90a82223d8037132d19eb.png

相信大家在大学时候学习数据结构就已经很让人头疼的,现在考研还有这个,实在是让很多同学头疼,今天学长写的这篇文章纯属干货,皆为数据结构精简知识点。希望帮助同学们快速了解数据结构这门课的核心知识点。

我们将数据结构看成是数据处理过程中的一种分析、存储、组织数据的方法与逻辑,它要考虑数据之间的特性与相互关系。而在我们考研中,数据结构这门科目包括数据结构算法两部分,注意,前者数据结构是指一门课程,后者数据结构是指一个知识体。

知识体的数据结构分为八类:1、数组;2、链表;3、栈;4、队列;5、树;6、散列表;7、堆;8、图。
算法部分有排序和查找两大类。

▍一、数据结构(知识体)

▶▶(1)数组

数组有一维数组,二维数组,三维数组,N维数组。其实这里的数组还是比较简单的,因为数组跟我们线性代数里面的向量和矩阵很类似,操作和矩阵运算很像。

▶▶(2)链表

1.链表特性是各个数据在计算机内存中的位置是不连续的并且随机存放的。

2.链表分为单向链表,环形链表,双向链表。其中这三种链表都包含了如何建立该链表,如何插入新节点,如何删除节点。

3.一个单向链表节点是由两个元素组成,数据字段和指针。指针会指向下一个元素在内存中的地址。第一个节点是链表头指针,指向最后一个节点的指针为None,不指向任何地方。

3b602853fcedf946d63ee1679ac5bb1d.png

▶▶(3)栈

1.栈是一组相同数据类型的组合,具有后进先出的特点,只能从栈的顶端存取数据。栈有5种基本的运算。

b348c32c67db73297ed66dce5cd22852.png

2.这里常考的有用栈来表示算术表达式;

3.前序法,中序法,后序法的求值;

4.中序法如何转换为前序法和后序法;

5.前序法和后序法如何转换为中序法。

▶▶(4)队列

1.队列是一种先进先出的有序线性表,栈只需要一个top指针指向栈的顶端,但是队列必须要使用front和rear两个指针分别指向队列的前端和末尾。

ef6d90674e46b8087f8214be25ec4dfa.png

2.队列分为环形队列,双向队列,优先队列。

3.环形队列实际上可看成是队列Q(0 : n-1)的一维数组,同时Q(0)是Q(n-1)的下一个元素,指针front永远以逆时针方向指向队列种的第一个元素的前一个位置,rear则指向队列当前的最后位置。

4.双向队列是一个有序线性表,加入和删除可在队列的任意一端进行。无论是左右两端的哪一端队列,队首和队尾指针都是朝着队列中央来移动的。

5.优先队列是一种不必遵守队列先进先出特点的有序线性表,其中的每一个元素都赋予一个优先级,加入元素时可以任意加入,但有更高优先级者则更先输出。

▶▶(5)树

树绝对是计算机考研中的网红考点了,其中最网红的莫过于二叉树了。

f8f6f6d271047fab4cd97a13fef2973c.png

1.二叉树与一般树有三个不同之处:树不可以为空集合,但是二叉树可以;树的度数为d≧0,但是二叉树的节点度数为0≦d≦2;树的子树间没有次序关系,二叉树有。

2.二叉树有先序遍历,中序遍历,后序遍历三种方式,再加一个层次遍历,

3.二叉树的遍历常考题型:

①能对任意一棵二叉树进行手动前序、中序、后序遍历;
②能将由前序+中序、后序+中序给出的序列还原成一棵二叉树;
③能将一个数学表达式用中序方法将其用二叉树画出来,并能写出其前缀(波兰式)、中缀、后缀(逆波兰式)表达出来;

4.二叉树的5个性质:

①在二叉树的第 i 层上至多有 2i-1 个结点(i≥1);
②深度为 k 的二叉树至多有 2k-1 个结点,(k≥1)
③对任何一棵二叉树T,如果其终端结点(叶子)数为n0,度为2的结点数为 n2,则 n0=n2+1;
④具有 n个结点的完全二叉树的深度为 log2 n1;
⑤如果对一棵有 n 个结点的完全二叉树(其深度为 log2 n1)的结点按性层序编号(从第1层到第log2 n1层,每层从左到右),则对任一结点 i(1≤i≤n)

5.二叉树的存储结构:

①了解顺序存储结构,只做了解;
②链式存储结构,重要,需要掌握,后面的算法都是基于此结构;
6.掌握二叉树转换为线索二叉树,树与二叉树的互相转化,森林与二叉树的互相转化。
7.霍夫曼树和平衡树也是很重要的考点,如何把一个含权值的链表转化为霍夫曼二叉树,如何把一个二叉查找树转换为平衡二叉树,这两个是常考的。

▶▶(6)散列表

1.散列表,也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。散列表很像python里的字典,一个key对应一个value。

2.哈希表是由数组+链表组成的,一个长度为n的数组中,每个元素存储的是一个链表的头结点。位置一般情况是通过hash(key)%len获得。

▶▶(7)堆

其实堆的知识点可以归结到二叉树,堆中某个节点的值总是不大于或不小于其父节点的值,堆总是一棵完全二叉树。这里常考的就是堆排序(完全二叉树的排序)

▶▶(8)图

1.图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。

2.图可以分为有向图和无向图;亦或者简单图和多重图。简单图满足:不存在重复边,不存在点到自身的边。非简单图即为多重图。

3.图有四种数据表示法,邻接矩阵法,邻接表法,邻接复合链表法,索引表格法。时间复杂度为:邻接表:O(|V|+|E|),邻接矩阵:O(|V|^2)。

4.图的遍历包括深度优先遍历法,广度优先遍历法。

5.深度优先遍历首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直至所有的顶点都被访问过。

6.广度优先遍历(BFS)有点类似于二叉树的层序遍历算法。从某个顶点 v 开始遍历与 v 邻近的 w1,w2,3...,然后遍历与 w1,w2,3...wi 邻近的点。

7.一个图通常具有不止一个生成树,有深度优先生成树和广度优先生成树,最小生成树是指在一个加权图中,找出从顶点A到顶B最低的路径成本。

e1d3c58a341a5e3d33376a7ec46f486c.png

二、算法部分

▶▶(1)排序

33970ce1fc8130dfbd3245d5aa5749d2.png

▶▶(2)查找

25fe20c8cf15b0a020dc07c1797c3983.png

看完了数据结构的核心知识点,你有没有涨姿势~学长今后还会对专业课知识继续分享,有什么疑问也欢迎在评论区和大家交流哦!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值