复旦大学软件工程考研(MSE)数据结构复习资料.pptx

上传人:b****2 文档编号:2669863 上传时间:2022-11-06 格式:PPTX 页数:249 大小:1.02MB
下载 相关 举报
复旦大学软件工程考研(MSE)数据结构复习资料.pptx_第1页
第1页 / 共249页
复旦大学软件工程考研(MSE)数据结构复习资料.pptx_第2页
第2页 / 共249页
复旦大学软件工程考研(MSE)数据结构复习资料.pptx_第3页
第3页 / 共249页
复旦大学软件工程考研(MSE)数据结构复习资料.pptx_第4页
第4页 / 共249页
复旦大学软件工程考研(MSE)数据结构复习资料.pptx_第5页
第5页 / 共249页
点击查看更多>>
下载资源
资源描述

复旦大学软件工程考研(MSE)数据结构复习资料.pptx

《复旦大学软件工程考研(MSE)数据结构复习资料.pptx》由会员分享,可在线阅读,更多相关《复旦大学软件工程考研(MSE)数据结构复习资料.pptx(249页珍藏版)》请在冰豆网上搜索。

复旦大学软件工程考研(MSE)数据结构复习资料.pptx

数据结构2016MSE考研冲刺课程安排n课程介绍n栈、队列和向量n树n查找n排序n图课程目的n(以最小代价)通过考试!

n不是成为专家n不是初学授课试题结构n考试满分60分n考试题型:

问答、分析、编程样题问答和编程题n插入排序、选择排序、冒泡排序、快速排序中最快的排序方法是_n试论述什么叫Hash冲突及有那些处理方法n编程实现对二叉树所有节点的统计课程安排n课程介绍n栈、队列和向量n树n查找n排序n图链表、栈和队列n大纲描述:

q单链表,双向链表,环形链表,带哨兵节点的链表q栈的基本概念和性质,栈ADT及其顺序,链接实现;栈的应用;栈与递归;q队列的基本概念和性质,队列ADT及其顺序,链接实现;队列的应用;q向量基本概念和性质;向量ADT及其数组、链接实现;线性表基本概念和性质n线性表q是n个数据元素的有限序列q常见线性表包括数组、链表、栈、队列等n线性表的两种实现方式q顺序q链式q对比:

插入(有序、无序)、删除、查找、读取环形链表n环形链表q又称循环列表,是另一种形式的链式存储结构。

它的特点是表中最后一个元素的指针域指向头结点栈的基本概念和性质n栈:

q栈是限定仅在表尾进行插入和删除操作的线性表q后进先出特性(LIFO)q栈顶、栈底、出栈、入栈例题n设有一个栈S,元素S1,S2,S3,S4,S5,S6依次进栈,如果6个元素的出栈顺序为S2,S3,S4,S6,S5,S1,则栈的容量至少应为多少?

n答案:

3栈的基本概念和性质n设计递归问题的非递归算法一般需要用到栈机制n三个数a、b、c进栈,不可能出现c、a、b顺序出栈例题n若某栈的输入序列为a、b、c,则所有可能的出栈序列有_种,所有不可能的出栈序列有_种。

n答案:

5,1例题n若栈的输入序列为1,2,3,4,则是不可能的栈输出序列之一。

n答案:

4,3,1,2习题n若某栈的输入序列为a、b、c、d,则所有可能的出栈序列有_种,所有不可能的出栈序列有_种。

n请写出所有可能的序列和不可能的序列。

栈的应用n数制转换q十进制数字与d进制数字的转换qN=(Ndivd)d+Nmodd其中div为整除,mod为求余。

q算法:

n将算法3.1中8换成d例题n十进制数1167等于八进制数?

n答案:

2217n思路:

q计算方法:

除余倒排法q验证方法:

指数相加法习题n十进制数1167等于七进制数?

栈的应用n表达式求值:

q中缀表达式转后缀表达式q后缀表达式求值n三种表达式:

q前缀表达式+abq中缀表达式a+bq后缀表达式ab+例题n中缀表达式a+bcd转为后缀表达式是?

n答案:

abcd例题n中缀表达式(a+b)cd转为后缀表达式是?

n答案:

abcdn思路:

q数字位序不变,运算符位置改变q后缀表达式无括号,运算顺序同中缀表达式习题n中缀表达式A-(B+C)*D/E的后缀形式是_。

练习n中缀表达式a*(b+c)/d转为后缀表达式是?

例题n计算后缀表达式12+4*2/的值为?

n答案:

6n思路:

q顺序计算q或转换为中缀表达式计算习题n计算后缀表达式324*2/3的值为?

递归n一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称为递归函数q优点:

结构清晰、程序易读、正确性容易得到证明q缺点:

效率相对较低队列的基本概念和性质n队列:

q队列是限定仅在表的一头进行插入、另一头进行删除操作的线性表q先进先出特性(FIFO)q队尾、队头、入队、出队例题n在初始为空的队列中插入元素a,b,c,d以后,紧接着作了两次删除操作,此时的队头元素是,队尾元素是。

n答案:

c,d双向队列n双向队列:

q亦称双端队列(Deque)q是限定插入和删除操作在表的两端进行的线性表q可以用于包装产生栈和队列课程安排n课程介绍n栈、队列和向量n树n查找n排序n图树n大纲描述:

q树的基本概念和术语;树的前序、中序、后序、层次序遍历;q二叉树及其性质;普通树与二叉树的转换;q树的存储结构,标准形式;完全树(completetree)的数组形式存储;q树的应用,Huffman树。

树的基本概念和术语n树:

q是n(n0)个结点的有限集q在任意一棵非空树中:

1.有且仅有一个特定的称为根的结点2.当n1时,其余结点可以分为m(m0)个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的子树q树属于层次结构数据结构树的基本概念和术语n节点n标签n父节点、子节点、兄弟节点、祖先节点、子孙节点n路径、树枝n根、叶子n次数n内部节点、外部节点n树的次数、K次树n节点层次、树的高度和深度n子树n有序树、无序树n森林、果园例题例题n列出如上图所示树的所有叶子结点q答案:

K,L,F,G,M,I,Jn列出如上图所示树的所有分支结点q答案:

A,B,C,D,E,Hn树A为几次树?

子树B呢?

q答案:

3,2n前页图所示树的高度为多少?

q答案:

4树的基本概念和术语n如果将树中结点的各子树看作从左到右有序的,则该树为有序树(orderedtree),否则为无序树。

n森林(forest)是m棵互不相交的树的集合。

n如果把一棵树的根砍去,剩下的部分就是森林。

n如果原来的树是有序的,则砍去根后的森林也是有序的,此时称该森林为有序森林或果园。

二叉树及其性质n二叉树(BinaryTree)q另一种树形结构,特点是每个结点至多只有二棵子树,且子树有左右之分,其次序不能任意颠倒n二叉树可能的五种基本形态二叉树及其性质n在二叉树的第i层上至多有2i1个结点(i1)例题n一棵二叉树第五层上至多有多少个结点?

至少多少?

n答案:

16,1二叉树及其性质n深度为k的二叉树至多有2k1个结点(k1)例题n深度为n(n0)的二叉树最多有_个结点。

n答案:

2n-1例题n一棵深度为5的二叉树至多有多少个结点?

至少多少?

n答案:

31,5例题n高度为h(h0)的二叉树最少有_个结点?

n答案:

h二叉树及其性质n对于任何二叉树,如果叶子节点数为n0,度为2的节点数为n2,则n0=n2+1例题n在一棵二叉树中有n0个叶结点,有n2个度为2的结点,则n2=_。

n答案:

n01例题n若一棵二叉树有10个叶结点,则该二叉树中度为2的结的点个数为_。

n答案:

9例题n若一二叉树有2度结点100个,则其叶结点有多少个?

n答案:

101例题n若二叉树中度为2的结点有15个,度为1的结点有10个,共有多少个结点?

n答案:

41例题n在一棵度为3的树中,度为3的结点有2个,度为2的结点有1个,度为1的结点有2个,那么,该树有_个叶结点。

n答案:

6n构造法二叉树及其性质n满二叉树:

q一棵深度为k且有2k1个结点的二叉树q可以对满二叉树的结点进行连续编号,约定编号从根开始,自上而下,自左而右。

n完全二叉树:

q深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应时,称为完全二叉树。

二叉树及其性质n完全二叉树特点:

q叶子结点只可能出现在层次最大的两层上q对任一结点,若其右分支下子孙的最大层次为l,其左下分支的子孙的最大层次必为l或者l1。

n深度为k的完全二叉树第k层最少1个结点,最多2k-1-1个结点;整棵树最少2k-1个结点,最多2k-2个结点例题n若某完全二叉树的深度为h,则该完全二叉树中至少有_个结点。

n答案:

2h-1例题n若深度为6的完全二叉树的第6层有3个叶结点,则该二叉树一共有_个结点。

n答案:

25-1+334例题n一个具有767个结点的完全二叉树,其叶子结点个数为_。

n答案:

384n分析:

可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知:

n0n21,则n=n0n1n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:

n=2n0+n11,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0(n1)/2或n0n/2,合并成一个公式:

n0(n1)/2,就可根据完全二叉树的结点总数计算出叶子结点数。

本题计算得:

384。

二叉树及其性质n具有n个结点的完全二叉树的深度为log2n+1例题n具有2000个结点的二叉树,其深度至少为_。

n答案:

11二叉树及其性质n如果含有n1个节点的二叉树的高度为log2n1,将其所有结点按层次序编号,则对于任一节点j(1jn),有q如果j=1,则节点j是树的根,无双亲;如果j1,则其父节点parent(j)是节点j/2q如果2jn,则节点j无左子节点;否则其左子节点为2jq如果2j+1n,则节点j无右子节点;否则其右子节点为2j+1n证明完全树的数组形式存储n完全树的数组形式存储算法q将其编号为i的结点元素存储在一维数组下标为i1的分量中例题n已知数组20,30,19,87,30,40表示一棵完全二叉树,请画出该树。

练习答案树的遍历n树的遍历q按某种搜索路径巡访树中每个结点,使每个结点均被访问一次仅且一次q二叉树的遍历可分为前序、中序、后序、层次序等q普通树的遍历可以分为先根、后根、层次序等树的遍历n二叉树的遍历q前序、中序、后序定义q层次序:

从上而下,从左至右n常见问题q已知树写遍历结果q已知遍历结果画树n依据:

二叉树的前序和中序遍历可以唯一确定一棵二叉树n思路:

前序定根,中序定左右q递归和非递归算法实现例题n写出左图所示二叉树的前序、中序、后序、层次序遍历结果例题答案n前序:

ABDCEFGn中序:

DBAECFGn后序:

DBEGFCAn层次序:

ABCDEFG例题n假设一棵二叉树的前序遍历为EBADCHGFIKJ,中序遍历为ABCDEFGHIJK,请画出该树。

例题答案树的遍历n普通树的遍历q前根:

先遍历根结点,再依次前根遍历各棵子树q后根:

先后根遍历各课子树,再遍历根结点q已知树写遍历结果q已知遍历结果画树n思路:

先根定根,后根定子树例题n写出如右图所示树的先根、后根、层次序遍历结果例题答案n前序:

ABECFGHDn后序:

EBFHGCDAn层次序:

ABCDEFGH练习给出如图所示树的先根、后根和层次序遍历结果练习答案n前根:

ABEFHIGCJKLDMNOQPn后根:

EHIFGBKLJCNQOPMDAn层次序:

ABCDEFGJMHIKLNOPQ例题n画出和下列已知序列对应的树T:

树的先根次序访问序列为GFKDAIEBCHJ树的后根次序访问序列为DIAEKFCJHBG例题答案普通树与二叉树的转换n对于任意k次树到相应二叉树的转换算法q对于具有子节点n1,n2nk的节点n,将n1作为其左子节点,且kj+1作为kj(1jk-1)的右子节点n思路:

“不同层在左,同层在右”普通树与二叉树的转换n对于任意森林到相应二叉树的转换算法为q设T=(T1,T2.Tm)为m(m0)棵树的序列,而BT(T1,T2.Tm)为相应的二叉树,则n如果m=0,则BT为空树n如果m0,则T1的根节点就是BT的根节点,而BT的左子树是T1的子树T11,T12T1K转换成的BTl(T11,T12T1K),其右子树为BTr(T2.Tm)例题n将下页图所示森林转换为等价的二叉树例题例题答案练习将如图所示树转换为二叉树练习答案Huffman树nHuffman树:

q又称最优树,是一类带权路径长度最短的树n基本概念:

q树的路径长度:

从根到每一结点的路径长度之和。

q结点的带权路径长度:

从该结点到树根之间的路径长度与结点上权的乘积。

q树的带权路径长度:

树中所有叶子结点的带权路径长度之和,通常记做WPL。

Huffman树n基本概念:

q假设有n个权值wi,试构造一棵有n个叶子结点的二叉树,每个叶子的结点带权为wi,则其中WPL最小的二叉树称为最优二叉树或赫夫曼树n算法q见下页Huffman算法

(1)由给定的n个权值w0,w1,w2,wn-1,构造具有n棵二叉树的集合F=T0,T1,T2,Tn-1,其中每一棵二叉树Ti只有一个带有权值wi的根结点,其左、右子树均为空。

(2)在F中选取两棵根结点的权值最小的二叉树,做为左、右子树构造一棵新的二叉树。

置新的二叉树的根结点的权值为其左、右子树上根结点的权值之和。

(3)在F中删去这两棵二叉树,加入新得的树。

(4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1