严蔚敏《数据结构》复习笔记及习题 (树和二叉树)【圣才出品】

合集下载

数据结构(C语言版)严蔚敏第6章 树和二叉树

数据结构(C语言版)严蔚敏第6章 树和二叉树
如图6-1(b)中结点H、I、J、K、L、M、N是叶子 结点,而所有其它结点都是分支结点。
⑷ 孩子结点、双亲结点、兄弟结点
一个结点的子树的根称为该结点的孩子结点(child) 或子结点;相应地,该结点是其孩子结点的双亲结点 (parent)或父结点。
4
如图6-1(b)中结点B 、C、D是结点A的子结点,而结 点A是结点B 、C、D的父结点;类似地结点E 、F是结 点B的子结点,结点B是结点E 、F的父结点。
这是树的递归定义,即用树来定义树,而只有 一个结点的树必定仅由根组成,如图6-1(a)所示。
2
2 树的基本术语
⑴ 结点(node):一个数据元素及其若干指向其子树的分支。 ⑵ 结点的度(degree) 、树的度:结点所拥有的子树
的棵数称为结点的度。树中结点度的最大值称为树的度。
A
B
C
D
A
E
F G HI J
同一双亲结点的所有子结点互称为兄弟结点。
如图6-1(b)中结点B 、C、D是兄弟结点;结点E 、 F是兄弟结点。
⑸ 层次、堂兄弟结点
规定树中根结点的层次为1,其余结点的层次等于 其双亲结点的层次加1。
若某结点在第l(l≧1)层,则其子结点在第l+1层。
双亲结点在同一层上的所有结点互称为堂兄弟结点。 如图6-1(b)中结点E、F、G、H、I、J。
(a) 只有根结点
K
LM N
图6-1 树的示例形式
(b) 一般的树
3
如图6-1(b)中结点A的度是3 ,结点B的度是2 ,结点 M的度是0,树的度是3 。
⑶ 叶子(left)结点、非叶子结点:树中度为0的
结点称为叶子结点(或终端结点)。相对应地,度不为 0的结点称为非叶子结点(或非终端结点或分支结点)。 除根结点外,分支结点又称为内部结点。

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)

第1章4.答案:(1)顺序存储结构顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。

(2)链式存储结构顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。

但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。

所以链式存储结构通常借助于程序设计语言的指针类型来描述。

5. 选择题(1)~(6):CCBDDA6.(1)O(1) (2)O(m*n) (3)O(n2)(4)O(log3n) (5)O(n2) (6)O(n)第2章1.选择题(1)~(5):BABAD (6)~(10):BCABD (11)~(15):CDDAC 2.算法设计题(1)将两个递增的有序链表合并为一个递增的有序链表。

要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。

表中不允许有重复的数据。

[题目分析]合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。

如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。

当一个表到达表尾结点,为空时,将非空表的剩余元素直接链接在Lc表的最后。

void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){//合并链表La和Lb,合并后的新表使用头指针Lc指向pa=La->next; pb=Lb->next;//pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点Lc=pc=La; //用La的头结点作为Lc的头结点while(pa && pb){ if(pa->data<pb->data){pc->next=pa; pc=pa; pa=pa->next;}//取较小者La中的元素,将pa链接在pc的后面,pa指针后移else if(pa->data>pb->data) {pc->next=pb; pc=pb; pb=pb->next;}//取较小者Lb中的元素,将pb链接在pc的后面,pb指针后移else //相等时取La中的元素,删除Lb中的元素{pc->next=pa;pc=pa;pa=pa->next;q=pb->next; delete pb ; pb =q;}}pc->next=pa?pa:pb; //插入剩余段delete Lb; //释放Lb的头结点}(5)设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。

数据结构期末复习要点(严蔚敏版)

数据结构期末复习要点(严蔚敏版)

数据结构期末复习要点第一章绪论1、掌握基本概念和术语,看教材P4—P6部分内容;2、看P10—P11关于类C的语法描述,算法设计写代码时可用到;3、掌握算法的特征(5个)和要求(5个)(P13—P14),能够结合具体算法分析算法的时间复杂度和空间复杂度(比如线性表的插入、删除操作,查找、排序等操作),理解O(n)、O(1)等时间复杂度的具体含义(P14—P17)。

第二章线性表1、看教材P21—P26,掌握有关线性表顺序存储的内容:(1)顺序表的随机存取(P21计算地址的公式);(2)顺序表的表示(P22的Typedef);(3)顺序表为空、为满的判定,插入和删除操作的特征以及时间复杂度的分析(P23—P25);(4)有关顺序表的编程题。

2、看教材P27—P30,掌握有关线性表链式存储的内容:(1)单链表的表示(P28的Typedef);(2)单链表为空的判定(带头结点、不带头结点);(3)单链表插入、删除操作的特征(操作点的确定以和指针的修改)以及时间复杂度分析(P29—P30);(4)有关单链表的编程。

3、为节约时间,循环链表、双向链表以及多项式加法可以不看;4、算法设计题要求写代码,在本章体现的可能性比较大。

第三章栈和队列1、顺序栈的表示,栈操作的特点以及为空、为满的判定(P46—P47);2、栈的应用举例看个标题就足够了;3、链队列的表示以及入队、出队操作(P61—P62);4、循环队列为空、为满的判定(P65的代码中);5、离散事件模拟这节不用看;6、第四章只需要看P70就够了,掌握串的特点(元素受限),串长度、空串、串的位置、串相等几个概念即可。

第六章树和二叉树1、看教材P120,了解有关树的概念和术语;2、了解二叉树的链式存储结构(P127),掌握二叉树的性质(P123—P125),并会做题(参考课件或指导书相关内容);3、掌握二叉树的各种遍历算法(P128—P129或课件):(1)能够根据二叉树写出各种遍历序列;(2)能够由两种遍历序列(必须包含中序序列)恢复二叉树;(3)理解二叉树遍历算法的递归代码,能够读懂代码含义。

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)

第1章4.答案:(1)顺序存储结构顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。

(2)链式存储结构顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。

但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。

所以链式存储结构通常借助于程序设计语言的指针类型来描述。

5. 选择题(1)~(6):CCBDDA\6.(1)O(1) (2)O(m*n) (3)O(n2)(4)O(log3n) (5)O(n2) (6)O(n)(第2章1.选择题(1)~(5):BABAD (6)~(10): BCABD (11)~(15):CDDAC\2.算法设计题(1)将两个递增的有序链表合并为一个递增的有序链表。

要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。

表中不允许有重复的数据。

[题目分析]合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。

如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。

当一个表到达表尾结点,为空时,将非空表的剩余元素直接链接在Lc表的最后。

void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){法设计题(1)将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。

当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈顶指针top[1]等于m时该栈为空。

两个栈均从两端向中间增长。

试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。

数据结构c语言版严蔚敏习题答案

数据结构c语言版严蔚敏习题答案

数据结构c语言版严蔚敏习题答案数据结构是计算机科学中一个重要的基础概念,它涉及到数据的组织、存储和管理方式。

在C语言中实现数据结构,可以有效地提高程序的效率和性能。

严蔚敏教授的《数据结构(C语言版)》是一本广泛使用的教材,它详细介绍了各种数据结构的原理和实现方法。

以下是对该书习题的一些答案分析:# 线性表线性表是最基本的数据结构,它由一系列线性排列的元素组成。

在C语言中,线性表通常使用数组或链表来实现。

- 数组实现:数组是一种静态数据结构,其大小在定义时确定,不支持动态扩展。

- 链表实现:链表是一种动态数据结构,可以灵活地添加和删除元素。

# 栈和队列栈是一种后进先出(LIFO)的数据结构,而队列是一种先进先出(FIFO)的数据结构。

- 栈的实现:可以使用数组或链表来实现栈。

栈的基本操作包括入栈(push)和出栈(pop)。

- 队列的实现:同样可以使用数组或链表实现队列。

队列的基本操作包括入队(enqueue)和出队(dequeue)。

# 树和二叉树树是一种层次结构的数据结构,其中每个节点有零个或多个子节点。

二叉树是树的一种特殊形式,每个节点最多有两个子节点。

- 二叉树遍历:包括前序遍历、中序遍历和后序遍历。

- 二叉搜索树:一种特殊的二叉树,其中每个节点的值都大于或等于其左子树中的所有节点的值,且小于或等于其右子树中的所有节点的值。

# 图图是由顶点(或称为节点)和边组成的数据结构。

图可以是无向的或有向的。

- 图的表示:图可以通过邻接矩阵或邻接表来表示。

- 图的遍历:包括深度优先搜索(DFS)和广度优先搜索(BFS)。

# 查找查找是数据结构中用于检索特定元素的过程。

- 顺序查找:在数组中按顺序查找元素。

- 二分查找:在有序数组中使用二分查找算法快速定位元素。

# 排序排序是将一组数据按照特定顺序排列的过程。

- 冒泡排序:通过重复遍历待排序的数列,比较每对相邻元素的大小,并在必要时交换它们的位置。

- 快速排序:一种分而治之的排序算法,通过选取一个“基准”元素并将数列分为两部分,一部分包含所有小于基准的元素,另一部分包含所有大于基准的元素。

《数据结构》复习题-第6章-树和二叉树

《数据结构》复习题-第6章-树和二叉树

《数据结构》复习题-第6章-树和⼆叉树第六章树和⼆叉树⼀、选择题1.已知⼀算术表达式的中缀形式为 A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为( )A.-A+B*C/DEB. -A+B*CD/EC.-+*ABC/DED. -+A*BC/DE【北京航空航天⼤学 1999 ⼀、3 (2分)】4. 设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶⼦数为()A.5 B.6 C.7 D.8【南京理⼯⼤学 2000 ⼀、8 (1.5分)】5. 在下述结论中,正确的是()【南京理⼯⼤学 1999 ⼀、4 (1分)】①只有⼀个结点的⼆叉树的度为0; ②⼆叉树的度为2;③⼆叉树的左右⼦树可任意交换;④深度为K的完全⼆叉树的结点个数⼩于或等于深度相同的满⼆叉树。

A.①②③ B.②③④ C.②④ D.①④6. 设森林F对应的⼆叉树为B,它有m个结点,B的根为p,p的右⼦树结点个数为n,森林F中第⼀棵树的结点个数是()A.m-n B.m-n-1 C.n+1 D.条件不⾜,⽆法确定【南京理⼯⼤学2000 ⼀、17(1.5分)】8.若⼀棵⼆叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C.15 D.不确定【北京⼯商⼤学2001⼀.7(3分)】9.在⼀棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个A.4 B.5 C.6 D.7 【哈尔滨⼯业⼤学 2001⼆、2 (2分)】10.设森林F中有三棵树,第⼀,第⼆,第三棵树的结点个数分别为M1,M2和M3。

与森林F对应的⼆叉树根结点的右⼦树上的结点个数是()。

【北⽅交通⼤学 2001 ⼀、16 (2分)】A.M1 B.M1+M2 C.M3 D.M2+M311.具有10个叶结点的⼆叉树中有()个度为2的结点,【北京航空航天⼤学2000 ⼀、5(2分)】A.8 B.9 C.10 D.ll16. 有关⼆叉树下列说法正确的是()【南京理⼯⼤学 2000 ⼀、11 (1.5分)】A.⼆叉树的度为2 B.⼀棵⼆叉树的度可以⼩于2 C.⼆叉树中⾄少有⼀个结点的度为2 D.⼆叉树中任何⼀个结点的度都为217.⼆叉树的第I层上最多含有结点数为()【中⼭⼤学1998⼆、7 (2分)】【北京理⼯⼤学 2001 六、5(2分)】A.2I B. 2I-1-1 C. 2I-1 D.2I -118. ⼀个具有1025个结点的⼆叉树的⾼h为()【南京理⼯⼤学 1999 ⼀、19 (2分)】A.11 B.10 C.11⾄1025之间 D.10⾄1024之间19.⼀棵⼆叉树⾼度为h,所有结点的度或为0,或为2,则这棵⼆叉树最少有( )结点A.2h B.2h-1 C.2h+1 D.h+1 【南京理⼯⼤学2001⼀、11(1.5分)】22.深度为h的满m叉树的第k层有()个结点。

严蔚敏数据结构复习整理完整版

1.复杂性分析对各种操作的时间复杂性的分析。

主要是链表,树,排序等简单一些的分析。

分析的时候,从简单的入手,学会方法。

后续的各种豆可能让你分析时间复杂度。

线性链表(顺序表和单链表)链表循环链表双向链表2.线性结构队列(循环队列)栈链表主要操作:找某一个元素,插入一个(在哪个位置增加),删除一个(在哪个位置删除)。

栈:查找,插入(位置固定),删除(位置固定)队列:查找,插入(位置固定),删除(位置固定)顺序表(可以视为一个数组)单链表:(删除)(插入)倒置:(查找)循环链表双向链表栈:(插入删除查找)队列(插入删除查找)循环队列的实现,并不是像上面的图那样,实现了一个循环的样子。

3.二叉树基本概念二叉树是每个节点最多有两个子树的有序树。

二叉树常被用于实现二叉查找树和二叉堆。

值得注意的是,二叉树不是树的特殊情形。

二叉树是每个结点最多有两个子树的有序树。

通常根的子树被称作“左子树”(left subtree)和“右子树”(right subtree)。

二叉树常被用作二叉查找树和二叉堆或是二叉排序树。

二叉树的每个结点至多只有二棵子树(不存在出度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。

二叉树不是树的一种特殊情形,尽管其与树有许多相似之处,但树和二叉树有两个主要差别:1. 树中结点的最大度数没有限制,而二叉树结点的最大度数为2;2。

树的结点无左、右之分,而二叉树的结点有左、右之分。

二叉树是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:(1)空二叉树——如图(a);(2)只有一个根结点的二叉树——如图(b);(3)只有左子树——如图(c);(4)只有右子树-—如图(d);(5)完全二叉树-—如图(e)注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形性质(1)在非空二叉树中,第i层的结点总数不超过, i〉=1;(2)深度为h的二叉树最多有2^h—1个结点(h>=1),最少有h个结点;(3)对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;(4)具有n个结点的完全二叉树的深度为(5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系: 若I为结点编号则如果I>1,则其父结点的编号为I/2;如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子;如果2*I+1〈=N,则其右儿子的结点编号为2*I+1;若2*I+1〉N,则无右儿子。

严蔚敏版数据结构课后习题答案-完整版

第1章绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。

在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。

一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。

抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。

在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =试按图论中图的画法惯例画出其逻辑结构图。

解:1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

解:ADT Complex{数据对象:D={r,i|r,i 为实数}数据关系:R={<r,i>}基本操作: InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re和imDestroyCmoplex(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e返回复数C的第k元的值Put(&C,k,e)操作结果:改变复数C的第k元的值为eIsAscending(C)操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0IsDescending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0Max(C,&e)操作结果:用e返回复数C的两个元素中值较大的一个Min(C,&e)操作结果:用e返回复数C的两个元素中值较小的一个}ADT ComplexADT RationalNumber{数据对象:D={s,m|s,m为自然数,且m不为0}数据关系:R={<s,m>}基本操作:InitRationalNumber(&R,s,m)操作结果:构造一个有理数R,其分子和分母分别为s和mDestroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值Put(&R,k,e)操作结果:改变有理数R的第k元的值为eIsAscending(R)操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0IsDescending(R)操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0Max(R,&e)操作结果:用e返回有理数R的两个元素中值较大的一个Min(R,&e)操作结果:用e返回有理数R的两个元素中值较小的一个}ADT RationalNumber1.5 试画出与下列程序段等价的框图。

严蔚敏版数据结构复习题

严蔚敏版数据结构复习题数据结构复习题集一、判断问题1.线性表的长度是线性表所占用的存储空间的大小。

(f)2.在双循环链表中,任何节点的后续指针都指向其逻辑后续节点。

(f)三,。

在链队列上执行队列操作时,前指针的值不会更改。

(f)四,。

如果两个字符串包含相同的字符,则称它们相等。

(f)5.如果二叉树中某结点的度为1,则说该结点只有一棵子树。

(t)6.已知一棵树的先序序列和后序序列,一定能构造出该树。

(f)7.图g的一棵最小代价生成树的代价未必小于g 的其它任何一棵生成树的代价。

(t)8.如果图G的拓扑序列是唯一的,则其弧数必须是n-1(其中n是顶点数)。

(f)九,。

按层次结构遍历堆不一定会产生有序序列。

(t)10.直接选择排序算法满足:其时间复杂度不受数据的初始特性影响,为o(n2)。

(t)11.线性表的逻辑顺序始终与物理顺序一致。

(f)十二,。

线性表的顺序存储表示优于链式存储表示。

(f)十三,。

如果线性表由链式存储表示,则所有节点之间的存储单元地址可以是连续的,也可以是不连续的。

(t)14.二维数组是其数组元素为线性表的线性表。

(f)15.每个数据结构应该有三个基本操作:插入、删除和搜索。

(t)16.(101,88,46,70,34,39,45,58,66,10)是堆;(t)17.将一棵树转换成二叉树后,根结点没有左子树;(f)18.在没有相同元素的同一输入序列上执行两个不同且合法的堆栈输入和堆栈输出组合操作,得到的输出序列也必须相同;(f)19.哈夫曼树是带权外部路径长度最短的树,路径上权值较大的结点离根较近(t)20.存储在一组具有连续地址的存储单元中的元素必须形成一个线性表。

(f) 21。

堆栈、队列和数组的逻辑结构是线性表结构。

(t) 22。

给定一组权重,可以唯一地构造哈夫曼树。

(f)23.相对于索引文件的基本数据,索引表包含的信息量相对少得多,因此。

索引表可以常驻内存。

(t)24.平均而言,快速排序法最快,堆叠排序法节省空间最多。

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析第一章绪论一、选择题1.组成数据的基本单位是()(A)数据项(B)数据类型(C)数据元素(D)数据变量2.数据结构是研究数据的()以及它们之间的相互关系。

(A)理想结构,物理结构(B)理想结构,抽象结构(C)物理结构,逻辑结构(D)抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。

①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像②(A)结构(B)关系(C)运算(D)算法5.算法分析的目的是()。

(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。

①(A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。

()2.算法就是程序。

()3.数据元素是数据的最小单位。

()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。

()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。

()三、填空题1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。

2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。

3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 / 99
十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com

第6章 树和二叉树
6.1 复习笔记
一、树的结构定义和基本操作
1.定义
树是n(n≥0)个结点的有限集。
n=0时称为空树;在一棵非空树中:
(1)有且仅有一个特定的结点称为根;
(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,
其中每一个集合本身又是一棵树,并且称为根的子树。
例如,在图6-1中,(a)是只有一个根结点的树;(b)是有13个结点的树,其中A
是根,其余结点分成三个互不相交的子集:T1={B,E,F,K,L},T2={C,G},T3=(D,
H,I,J,M};Tl、T2和T3都是根A的子树。
2 / 99

十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com

图6-1 树的示例
2.树的表示形式
如图6-2所示为图6-1(b)中树的各种表示形式。其中:
(a)嵌套集合表示树:用集合和嵌套的集合表示树,如图6-2(a);
(b)广义表表示树:根作为由子树森林组成的表的名字写在表的左边,如图6-2(b);
(c)凹入法表示树:如图6-2(c)。
3 / 99

十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com

图6-2 树的其他三种表示法

3.基本术语
(1)结点:树的结点包含一个数据元素及若干指向其子树的分支。
(2)结点的度:结点拥有的子树个数。
(3)树的度:树内各结点的度的最大值。
(4)叶子(终端结点):度为0的结点称为叶子或终端结点;度不为0的结点称为非
终端结点或分支结点。
(5)结点的孩子、双亲:结点的子树的根称为该结点的孩子,相应地,该结点称为孩
子的双亲。
(6)结点的兄弟:同一双亲的孩子之间互称为兄弟。
(7)树的深度:树中结点的最大层次称为树的深度或高度。
(8)结点的祖先:从根到该结点所经分支上的所有结点。
(9)结点的子孙:以该结点为根的子树中的任一结点。
(10)结点的层次:从根开始定义,根为第一层,根的孩子为第二层。
(11)结点的堂兄弟:其双亲在同一层的结点互为堂兄弟。
(12)森林:m(m≥0)棵互不相交的树的集合。
(13)有序树与无序树:树中结点的各子树从左至右是有次序的(即不能互换),则称
该树为有序树,否则称为无序树。

4.树的基本操作
(1)INITIATE(T):初始化操作。
4 / 99

十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com

(2)ROOT(T)或ROOT(x):求根函数。

(3)PARENT(T,x):求双亲函数。
(4)CHILD(T,x,i):求孩子结点函数。
(5)RIGHT_SIBLING(T,x):求右兄弟函数。
(6)CRT_TREE(x,F):建树函数。
(7)INS_CHILD(y,i,x):插入子树操作。
(8)DEL_CHILD(x,i):删除子树操作。
(9)TRAVERSE(T):遍历操作。
(10)CLEAR(T):置树为空。

二、二叉树
1.定义
每个结点至多只有二棵子树(即不存在度大于2的结点),其子树(也为二叉树)有左
右之分且次序不能任意颠倒的树称为二叉树。
二叉树有五种基本形态,如图6-3所示。
5 / 99

十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com

图6-3 二叉树的五种基本形态

【注意】度为2的树和二叉树的区别:
①度为2的树至少有3个结点,而二叉树可以为空;
②度为2的树的孩子结点左右次序是相对的,而二叉树孩子结点左右次序是确定且不
能任意更改的。

2.完全二叉树和满二叉树
(1)满二叉树的定义和特点
定义:一棵深度为k且有2k-1个结点的二叉树称为满二叉树。
特点:每一层上的结点数都是最大结点数。
(2)完全二叉树的定义和特点
定义:深度为k、有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉
树中编号从1至n的结点一一对应时,称之为完全二叉树。
特点:
①叶子结点只可能出现在层次最大的两层;
②至多只能出现一个度为1的结点;
③当i≤⌊n/2⌋时,结点i为分支结点,否则为叶子结点。

3.性质
(1)二叉树的第i层上至多有2i-1个结点(i≥1)。
(2)深度(高度)为k的二叉树至多有2k-1个结点(k≥1)。
(3)非空二叉树上叶子数等于度为2的结点数加1,即n0=n2+1。
6 / 99

十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com

(4)具有n个结点的完全二叉树的深度为⌊log2n⌋+1或⌈log2(n+1)⌉。

(5)对一棵完全二叉树从上到下,从左到右编号为1,2,…,n,对结点i有
①当i=1,则结点i是二叉树的根,无双亲;当i>1,则其双亲为结点⌊i/2⌋;
②当2i>n,结点i无左孩子(结点i为叶子结点);否则其左孩子为结点2i;
③如果2i+1>n,则结点i无右孩子;否则其右孩子为结点2i+1;
④结点i所在层次为⌊log2i⌋+1。

4.二叉树的存储结构
(1)顺序存储结构
用一组地址连续的存储单元存储二叉树的数据元素称为二叉树的顺序存储,它仅适合于
完全二叉树和满二叉树。
(2)链式存储结构
设计不同的结点结构可以构成不同的链式存储结构,一般来讲,二叉树的链式存储结构
至少包含三个域:数据域和左、右指针域,其结构如下所示:

三、遍历二叉树和线索二叉树
1.遍历二叉树
(1)定义
按某条搜索路径访问树中每个结点,使得每个结点均被且仅被访问一次。
(2)遍历分类
①先序遍历

相关文档
最新文档