考研数据结构复习121130
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
an插入删除队列a1a2a3an入队列队头头队尾尾出队列队列的特点先进先出队列的示意图第一个入队的元素在队头最后一个入队的元素在队尾第一个出队的元素为队头元素最后一个出队的元素为队尾元素循环队列判分队空队满有两种方法
《数据结构》复习
试卷类型及比例 数据结构(40分): 选择题:10分,简答题:10分,算法题:20分。
head
head是头指针
线性链表的每个结点中只有一个指针域 故也称为单链表
a1
a2
ai1
ai
ai+1
空指针
an n
头结点
例1、设一单向链表的头指针为head,链表的记录中 包含着整数类型的key域,试设计算法,将此链表的记录 按照key递增的次序进行就地排序。(不允许使用数组 做辅助存储) 例2、将单链表L1拆成二个链表,其中以L1为头的 链表保持原来向后的链接,另一个链表的头为L2, 其链接方向与L1相反,L1包含原链表的奇数序号的 节点,L2包含原链表的偶数序号的节点。
为了表示线性表中元素的先后关系,每个 元素除需要存储自身的信息外,还要保存直 接前趋元素或直接后继元素的存储位置。
a1 a2 ai-1 ai ai+1 an
头指针:存放线性链表中第一个结点的存储地址; 头结点:链表的第一个元素结点前的附加结点; 带头结点的线性链表:第一个元素结点前增加一个附加 结点的线性链表称为 带头结点的线性链表;
《数据结构》复习
数据结构的研究内容: 研究数据的逻辑结构、存储结构和运算集合。
逻辑结构是数据结构的抽象,存储结构是数据结构的实现 存储结构的二种类型: 顺序存储结构—通过在存储器中的相对位置, 表示数据的逻辑结构。 非顺序存储结构(链式存储结构) --由指针表示数据间的逻辑关系。
常用的数据结构
二叉树中所有结点的度小于等于2,所以有:n=n0+n1+n2 设二叉树中分支数目为B, 因除根结点外, 每个结点均对应一个 进入它的分支,所以有:n=B+1
又因二叉树中的分支都是由度为1和度为2的结点发出, 所以分支
数目为 B=n1+2n2
整理后得n0=n2+1,故结论成立
二叉树顺序存储结构,二叉链表存储结构
内容: 1、线性表基本概念,顺序存储结构\链式存储结构、相应操作。 2、栈和队列的特点,栈的应用、递归算法的设计。 3、树的基本概念,二叉树的性质、存储结构,树与森林,树的 遍历及应用。 4、图的基本概念,图的存贮结构,图的遍历和拓扑排序。 5、查找的基本概念、查找性能分析、顺序查找、折半查找和二 叉排序树查找。 6、直接插入排序、希尔排序、快速排序、简单选择排序和归并 排序。
{
hl=PostTreeDepth(bt->LChild); //求左子树的深度 hr=PostTreeDepth(bt->RChild); //求右子树的深度 max=hl>hr?hl: hr; //得到左、 右子树深度较大者 return(max+1); // 返回树的深度
}
else return(0); //如果是空树, 则返回0 }
树
树
根 结点 X 的第一个孩子 结点 X 紧邻的右兄弟
A B B C D E C F G H I D
二叉树
根 结点 X 的左孩子 结点 X 的右孩子
A
E
F
G
H
I
森林
B
A C D
E F H
G I J
(a) 森林 A B A B C D J F E H D I H I H (c) 森林对应的二叉树 G C F G E
线性链表小结 线性链表是线性表的一种链式存储结构
线性链表的特点
1 通过保存直接后继元素的存储位置来表示 数据元素之间的逻辑关系; 2 插入、删除操作通过修改结点的指针实现; 3 不能随机存取元素;
二 栈与队列
栈的概念 栈是限定仅能在表尾一端进行插入、删除操 作的线性表
(a1, a2, ... , ai -1, ai , ai+1, …, an )
E F G H
D
I
J
K
L
M
二叉树的性质
性质1: 在二叉树的第i层上至多有2i-1个结点(i≥1)。
因二叉树中每个结点的度最大为 2 ,则第 k+1 层的结点总数最多
为第k层上结点最大数的2倍,即2×2k-1=2(k+1)-1,故结论成立。
性质2: 深度为k的二叉树至多有2k-1个结点(k≥1)。 证明:深度为 k 的二叉树,其结点总数的最大值是二叉树中
2 队列中的元素具有先进先出的特点;
3 队头、队尾元素的位置分别由称为队头指针 和队尾指针的变量指示,
4 入队操作要修改队尾指针,出队操作要修改 队头指针;
三、树与二叉树
树的 基本术语 结点的层次:根结点的层次定义为1;根的孩子为第 二层,依此类推; 树的深度:树中所有结点的层次的最大值 A 结点的度:结点子树的个数 树的度: 树中结点度的最大值。 叶子结点:度为 0 的结点; B C 分枝结点:度不为0的结点;
删除 插入
队列
队列的特点
出队列
a1 a2 a3
队 头
队 列 的 示 意 图
an
队 尾
入队列
先进先出
第一个入队的元素在队头, 最后一个入队的元素在队尾, 第一个出队的元素为队头元素, 最后一个出队的元素为队尾元素
循环队列
判分队空、队满有两种方法: 1)另设一个标志位以区分队空、队满。
2)少用一个存储单元,队满条件: rear+1=front;
后序遍历(L R T) 若二叉树非空 (1)后序遍历左子树 (2)后序遍历右子树 (3)访问根结点
A B D E
C
F
G
例:后序遍历右图所示的二叉树 (1)后序遍历左子树:即按 L R T 的顺序遍历左子树 (2)后序遍历右子树:即按 L R T 的顺序遍历右子树 (3)访问根结点A 后序遍历序列: D,G,E,B,F,C,A
记作 :
WPL= wi Li
哈夫曼树:设有n个权值(w1 , w2 , … , wn ),构造有n个叶结点的二 叉树,每个叶结点以 wi 为它的权值。则带权路径长度最小的二叉 树为哈夫曼树。
WPL? A B C D D 4
C
2
7
5 2 哈夫曼树?
4
7
A
B
5
WPL? 哈夫曼树?
构造哈夫曼树的算法: 1.根据给定的n个权值 ,构造n棵带权只有一个根结点的二叉树
(1) 线性结构:结构中的数据元素之间存在着一对一
的线性关系。线性表、栈、队、字符串、数组 (2) 树形结构:结构中的数据元素之间存在着一对多 的层次关系。---非线性结构 (3) 图状结构或网状结构:结构中的数据元素之间存 在着多对多的任意关系。--- 非线性结构
一 线性表
线性表是最简单、最常用的数据结构。
每层结点的最大值相加.
深度为k的二叉树的结点总数至多为 :
第i层上的最大结点个数 2
i 1 i 1
k
k
i 1
2 1
k
故结论成立。
性质3: 对任意一棵二叉树T,若叶结点数为n0,而其度为2的 结点数为n2,则n0=n2+1。
证明:设二叉树中结点总数为n, n1为度为1的结点总数。
例1 、 求二叉树的叶子结点个数。 例2、试写出一递归函数,判别两棵树是否相等。
例3、将二叉树bt中每一个结点的左右子树互换。
例4、求二叉树的高度。
root
A
C∧
B∧
∧D
∧F∧
∧ E∧
int PostTreeDepth(struct bitnode *root) //求二叉树的高度 { int hl, hr, max; if(bt! =NULL)
F={T1、T2…Tn}
2.在F中选取两棵根结点权值最小的树作为左、右子二叉树,构造 一颗新的二叉树,
且新二叉树根的权值=左、右子树根结点权值之和;
3.从F中删除这两棵二叉树,并将新二叉树加入F; 4.重复 2、3,直到F中只含一棵二叉树为止;
例:构造以W=(5,15,40,30,10)为权的哈夫曼树。
二叉树
1 二叉树: 或为空树,或由根及两颗互不相交 的左子树、右子树构成,并且左、右子树本身 也是二叉树; 二叉树可以用链式结构存储; 2
3 遍历:按某种搜索路径访问二叉树的每个结点 ,每个结点仅被访问一次。 4 二叉树的遍历可以分解为:访问根,遍历左子 树和遍历右子树,常用的三种遍历算法:先序 遍历、中序遍历、后序遍历;
栈、队列、串是特殊的线性表,数组和广 义表是线性表的扩展--线性结构
线性表的概念
设 A=(a1, a2, ... , ai -1, ai , ai+1, …, an )是一线性表, 1) 同一线性表中的元素必须是同一类型的; 2) 在表中 ai-1 领先于ai ,ai 领先于ai+1 ,称ai-1 是ai 的前件 ,ai+1 是ai 的后件; 3) 在线性表中,除第一个元素和最后一个元素之外,其他 元素都有且仅有一个前件,有且仅有一个后件; 4) 线性表中元素的个数n 称为线性表的长度,n=0 时称为空 表;
栈
小 结
1
2
栈是限定仅能在表尾一端进行插入、
删除操作的线性表; 栈的元素具有后进先出的特点;
3
栈顶元素的位置由一个称为栈顶指针的
变量指示, 进栈、出栈操作要修改栈顶指针;
队列
队列的概念
一 什么是队列
队列是限定仅能在表头进行删除,表尾进行插入的线性表
(a1, a2, ... , ai -1, ai , ai+1, …, an )
J5
队空: front=rear
队列中元素的个数
(rear –front+ MAXQSIZE )% MAXQSIZE
front
4 3
J6 5 2
0 1
ห้องสมุดไป่ตู้
J7
J4
J8
rear
入队时的操作为 rear=(rear+1) mod MAXQSIZE
小 结
1 队列是限定仅能在表尾一端进行插入,表头 一端删除 操作的线性表;
删除 插入
栈
出栈 进栈
栈的特点
后进先出
栈 顶
an
第一个进栈的元素在栈底, 最后一个进栈的元素在栈顶, 第一个出栈的元素为栈顶元素, 最后一个出栈的元素为栈底元素
栈 底
a2 a1
栈的示意图
例:一个栈的输入序列为a,b,c,d,若在入栈的过 程中允许出栈,则可能得到的出栈序列是什 么? 一个栈的输入序列为1,2,3,4……n,?
先序遍历序列:A,B,D,E,G,C,F
G
中序遍历(L T R) 若二叉树非空 (1)中序遍历左子树 (2)访问根结点 (3)中序遍历右子树
A B D E
C
F
G
例:中序遍历右图所示的二叉树 (1)中序遍历左子树:即按 L T R 的顺序遍历左子树 (2)访问根结点A (3)中序遍历右子树:即按 L T R 的顺序遍历右子树 中序遍历序列: D,B,G,E,A,C,F
例3、线性表合并:二个有序线性表LA、LB合并为 一个有序线性表,合并后不另设新表存储。
线性表的顺序存储和实现
顺序表是线性表最简单的一种存储结构
小结
顺序表的特点: 1 通过元素的存储顺序反映 线性表中 数据元素之间的逻辑关系; 2 可随机存取顺序表的元素; 3 顺序表的插入、删除操作要通过移动 元素实现;
(b) 森林中每棵树对应的二叉树
森林转换为二叉树的过程
哈夫曼树及应用
1 哈夫曼树---带权路径长度最短的二叉树(最优树)。 路径:从一个结点到另一个结点之间的若干个分支序列; 路径长度:从一个结点到另一个结点路径上的分支数目;
结点的路径长度:从根到该结点的路径长度;
树的路径长度:树中所有叶子结点的路径长度之和;记为PL. 在结点数相同的条件下,完全二叉树是路径最短的二叉树
二叉链表中每个结点包含三个域:数据域、左指针域、右 指针域 A A B D F E
C
∧D
B ∧ ∧
E ∧
C∧
∧
F ∧
二叉链表图示
先序遍历(T L R) 若二叉树非空 (1)访问根结点; (2)先序遍历左子树; (3)先序遍历右子树;
A B D E
C
F
例:先序遍历右图所示的二叉树 (1)访问根结点A (2)先序遍历左子树:即按 T L R 的顺序遍历左子树 (3)先序遍历右子树:即按 T L R 的顺序遍历右子树
线性表的顺序存储和实现
线性表的顺序存储结构 用一组连续的内存单元依次存放线性 表的数据元素。
线性表(a1,a2, a3, ... an ) 的顺序存储结构
a1 a2
用顺序存储结构存储的 线性表——称为顺序表
ai-1 ai ai+1
an
线性表的链式存储和实现
线性表的链式存储结构是用一组任意的存 储单元存储线性表的各个数据元素。
1 2 4 7 5 8 3 6 8 4 2 5 6 1 3 7
非完全二叉树 PL=10
完全二叉树PL=9
(路径最短的二叉树不唯一,不是完全二叉树,也可能路径长度最短)
1 哈夫曼树的概念(续) 结点的权:根据应用的需要给树的结点赋的权值; 树的带权路径长度=树中所有叶结点的带权路径长度之和;
结点的带权路径长度:从根到该结点的路径长度与该结点权的乘积;
《数据结构》复习
试卷类型及比例 数据结构(40分): 选择题:10分,简答题:10分,算法题:20分。
head
head是头指针
线性链表的每个结点中只有一个指针域 故也称为单链表
a1
a2
ai1
ai
ai+1
空指针
an n
头结点
例1、设一单向链表的头指针为head,链表的记录中 包含着整数类型的key域,试设计算法,将此链表的记录 按照key递增的次序进行就地排序。(不允许使用数组 做辅助存储) 例2、将单链表L1拆成二个链表,其中以L1为头的 链表保持原来向后的链接,另一个链表的头为L2, 其链接方向与L1相反,L1包含原链表的奇数序号的 节点,L2包含原链表的偶数序号的节点。
为了表示线性表中元素的先后关系,每个 元素除需要存储自身的信息外,还要保存直 接前趋元素或直接后继元素的存储位置。
a1 a2 ai-1 ai ai+1 an
头指针:存放线性链表中第一个结点的存储地址; 头结点:链表的第一个元素结点前的附加结点; 带头结点的线性链表:第一个元素结点前增加一个附加 结点的线性链表称为 带头结点的线性链表;
《数据结构》复习
数据结构的研究内容: 研究数据的逻辑结构、存储结构和运算集合。
逻辑结构是数据结构的抽象,存储结构是数据结构的实现 存储结构的二种类型: 顺序存储结构—通过在存储器中的相对位置, 表示数据的逻辑结构。 非顺序存储结构(链式存储结构) --由指针表示数据间的逻辑关系。
常用的数据结构
二叉树中所有结点的度小于等于2,所以有:n=n0+n1+n2 设二叉树中分支数目为B, 因除根结点外, 每个结点均对应一个 进入它的分支,所以有:n=B+1
又因二叉树中的分支都是由度为1和度为2的结点发出, 所以分支
数目为 B=n1+2n2
整理后得n0=n2+1,故结论成立
二叉树顺序存储结构,二叉链表存储结构
内容: 1、线性表基本概念,顺序存储结构\链式存储结构、相应操作。 2、栈和队列的特点,栈的应用、递归算法的设计。 3、树的基本概念,二叉树的性质、存储结构,树与森林,树的 遍历及应用。 4、图的基本概念,图的存贮结构,图的遍历和拓扑排序。 5、查找的基本概念、查找性能分析、顺序查找、折半查找和二 叉排序树查找。 6、直接插入排序、希尔排序、快速排序、简单选择排序和归并 排序。
{
hl=PostTreeDepth(bt->LChild); //求左子树的深度 hr=PostTreeDepth(bt->RChild); //求右子树的深度 max=hl>hr?hl: hr; //得到左、 右子树深度较大者 return(max+1); // 返回树的深度
}
else return(0); //如果是空树, 则返回0 }
树
树
根 结点 X 的第一个孩子 结点 X 紧邻的右兄弟
A B B C D E C F G H I D
二叉树
根 结点 X 的左孩子 结点 X 的右孩子
A
E
F
G
H
I
森林
B
A C D
E F H
G I J
(a) 森林 A B A B C D J F E H D I H I H (c) 森林对应的二叉树 G C F G E
线性链表小结 线性链表是线性表的一种链式存储结构
线性链表的特点
1 通过保存直接后继元素的存储位置来表示 数据元素之间的逻辑关系; 2 插入、删除操作通过修改结点的指针实现; 3 不能随机存取元素;
二 栈与队列
栈的概念 栈是限定仅能在表尾一端进行插入、删除操 作的线性表
(a1, a2, ... , ai -1, ai , ai+1, …, an )
E F G H
D
I
J
K
L
M
二叉树的性质
性质1: 在二叉树的第i层上至多有2i-1个结点(i≥1)。
因二叉树中每个结点的度最大为 2 ,则第 k+1 层的结点总数最多
为第k层上结点最大数的2倍,即2×2k-1=2(k+1)-1,故结论成立。
性质2: 深度为k的二叉树至多有2k-1个结点(k≥1)。 证明:深度为 k 的二叉树,其结点总数的最大值是二叉树中
2 队列中的元素具有先进先出的特点;
3 队头、队尾元素的位置分别由称为队头指针 和队尾指针的变量指示,
4 入队操作要修改队尾指针,出队操作要修改 队头指针;
三、树与二叉树
树的 基本术语 结点的层次:根结点的层次定义为1;根的孩子为第 二层,依此类推; 树的深度:树中所有结点的层次的最大值 A 结点的度:结点子树的个数 树的度: 树中结点度的最大值。 叶子结点:度为 0 的结点; B C 分枝结点:度不为0的结点;
删除 插入
队列
队列的特点
出队列
a1 a2 a3
队 头
队 列 的 示 意 图
an
队 尾
入队列
先进先出
第一个入队的元素在队头, 最后一个入队的元素在队尾, 第一个出队的元素为队头元素, 最后一个出队的元素为队尾元素
循环队列
判分队空、队满有两种方法: 1)另设一个标志位以区分队空、队满。
2)少用一个存储单元,队满条件: rear+1=front;
后序遍历(L R T) 若二叉树非空 (1)后序遍历左子树 (2)后序遍历右子树 (3)访问根结点
A B D E
C
F
G
例:后序遍历右图所示的二叉树 (1)后序遍历左子树:即按 L R T 的顺序遍历左子树 (2)后序遍历右子树:即按 L R T 的顺序遍历右子树 (3)访问根结点A 后序遍历序列: D,G,E,B,F,C,A
记作 :
WPL= wi Li
哈夫曼树:设有n个权值(w1 , w2 , … , wn ),构造有n个叶结点的二 叉树,每个叶结点以 wi 为它的权值。则带权路径长度最小的二叉 树为哈夫曼树。
WPL? A B C D D 4
C
2
7
5 2 哈夫曼树?
4
7
A
B
5
WPL? 哈夫曼树?
构造哈夫曼树的算法: 1.根据给定的n个权值 ,构造n棵带权只有一个根结点的二叉树
(1) 线性结构:结构中的数据元素之间存在着一对一
的线性关系。线性表、栈、队、字符串、数组 (2) 树形结构:结构中的数据元素之间存在着一对多 的层次关系。---非线性结构 (3) 图状结构或网状结构:结构中的数据元素之间存 在着多对多的任意关系。--- 非线性结构
一 线性表
线性表是最简单、最常用的数据结构。
每层结点的最大值相加.
深度为k的二叉树的结点总数至多为 :
第i层上的最大结点个数 2
i 1 i 1
k
k
i 1
2 1
k
故结论成立。
性质3: 对任意一棵二叉树T,若叶结点数为n0,而其度为2的 结点数为n2,则n0=n2+1。
证明:设二叉树中结点总数为n, n1为度为1的结点总数。
例1 、 求二叉树的叶子结点个数。 例2、试写出一递归函数,判别两棵树是否相等。
例3、将二叉树bt中每一个结点的左右子树互换。
例4、求二叉树的高度。
root
A
C∧
B∧
∧D
∧F∧
∧ E∧
int PostTreeDepth(struct bitnode *root) //求二叉树的高度 { int hl, hr, max; if(bt! =NULL)
F={T1、T2…Tn}
2.在F中选取两棵根结点权值最小的树作为左、右子二叉树,构造 一颗新的二叉树,
且新二叉树根的权值=左、右子树根结点权值之和;
3.从F中删除这两棵二叉树,并将新二叉树加入F; 4.重复 2、3,直到F中只含一棵二叉树为止;
例:构造以W=(5,15,40,30,10)为权的哈夫曼树。
二叉树
1 二叉树: 或为空树,或由根及两颗互不相交 的左子树、右子树构成,并且左、右子树本身 也是二叉树; 二叉树可以用链式结构存储; 2
3 遍历:按某种搜索路径访问二叉树的每个结点 ,每个结点仅被访问一次。 4 二叉树的遍历可以分解为:访问根,遍历左子 树和遍历右子树,常用的三种遍历算法:先序 遍历、中序遍历、后序遍历;
栈、队列、串是特殊的线性表,数组和广 义表是线性表的扩展--线性结构
线性表的概念
设 A=(a1, a2, ... , ai -1, ai , ai+1, …, an )是一线性表, 1) 同一线性表中的元素必须是同一类型的; 2) 在表中 ai-1 领先于ai ,ai 领先于ai+1 ,称ai-1 是ai 的前件 ,ai+1 是ai 的后件; 3) 在线性表中,除第一个元素和最后一个元素之外,其他 元素都有且仅有一个前件,有且仅有一个后件; 4) 线性表中元素的个数n 称为线性表的长度,n=0 时称为空 表;
栈
小 结
1
2
栈是限定仅能在表尾一端进行插入、
删除操作的线性表; 栈的元素具有后进先出的特点;
3
栈顶元素的位置由一个称为栈顶指针的
变量指示, 进栈、出栈操作要修改栈顶指针;
队列
队列的概念
一 什么是队列
队列是限定仅能在表头进行删除,表尾进行插入的线性表
(a1, a2, ... , ai -1, ai , ai+1, …, an )
J5
队空: front=rear
队列中元素的个数
(rear –front+ MAXQSIZE )% MAXQSIZE
front
4 3
J6 5 2
0 1
ห้องสมุดไป่ตู้
J7
J4
J8
rear
入队时的操作为 rear=(rear+1) mod MAXQSIZE
小 结
1 队列是限定仅能在表尾一端进行插入,表头 一端删除 操作的线性表;
删除 插入
栈
出栈 进栈
栈的特点
后进先出
栈 顶
an
第一个进栈的元素在栈底, 最后一个进栈的元素在栈顶, 第一个出栈的元素为栈顶元素, 最后一个出栈的元素为栈底元素
栈 底
a2 a1
栈的示意图
例:一个栈的输入序列为a,b,c,d,若在入栈的过 程中允许出栈,则可能得到的出栈序列是什 么? 一个栈的输入序列为1,2,3,4……n,?
先序遍历序列:A,B,D,E,G,C,F
G
中序遍历(L T R) 若二叉树非空 (1)中序遍历左子树 (2)访问根结点 (3)中序遍历右子树
A B D E
C
F
G
例:中序遍历右图所示的二叉树 (1)中序遍历左子树:即按 L T R 的顺序遍历左子树 (2)访问根结点A (3)中序遍历右子树:即按 L T R 的顺序遍历右子树 中序遍历序列: D,B,G,E,A,C,F
例3、线性表合并:二个有序线性表LA、LB合并为 一个有序线性表,合并后不另设新表存储。
线性表的顺序存储和实现
顺序表是线性表最简单的一种存储结构
小结
顺序表的特点: 1 通过元素的存储顺序反映 线性表中 数据元素之间的逻辑关系; 2 可随机存取顺序表的元素; 3 顺序表的插入、删除操作要通过移动 元素实现;
(b) 森林中每棵树对应的二叉树
森林转换为二叉树的过程
哈夫曼树及应用
1 哈夫曼树---带权路径长度最短的二叉树(最优树)。 路径:从一个结点到另一个结点之间的若干个分支序列; 路径长度:从一个结点到另一个结点路径上的分支数目;
结点的路径长度:从根到该结点的路径长度;
树的路径长度:树中所有叶子结点的路径长度之和;记为PL. 在结点数相同的条件下,完全二叉树是路径最短的二叉树
二叉链表中每个结点包含三个域:数据域、左指针域、右 指针域 A A B D F E
C
∧D
B ∧ ∧
E ∧
C∧
∧
F ∧
二叉链表图示
先序遍历(T L R) 若二叉树非空 (1)访问根结点; (2)先序遍历左子树; (3)先序遍历右子树;
A B D E
C
F
例:先序遍历右图所示的二叉树 (1)访问根结点A (2)先序遍历左子树:即按 T L R 的顺序遍历左子树 (3)先序遍历右子树:即按 T L R 的顺序遍历右子树
线性表的顺序存储和实现
线性表的顺序存储结构 用一组连续的内存单元依次存放线性 表的数据元素。
线性表(a1,a2, a3, ... an ) 的顺序存储结构
a1 a2
用顺序存储结构存储的 线性表——称为顺序表
ai-1 ai ai+1
an
线性表的链式存储和实现
线性表的链式存储结构是用一组任意的存 储单元存储线性表的各个数据元素。
1 2 4 7 5 8 3 6 8 4 2 5 6 1 3 7
非完全二叉树 PL=10
完全二叉树PL=9
(路径最短的二叉树不唯一,不是完全二叉树,也可能路径长度最短)
1 哈夫曼树的概念(续) 结点的权:根据应用的需要给树的结点赋的权值; 树的带权路径长度=树中所有叶结点的带权路径长度之和;
结点的带权路径长度:从根到该结点的路径长度与该结点权的乘积;