数据结构第7章树和二叉树习题课PPT课件

合集下载

树与二叉树基本操作ppt课件

树与二叉树基本操作ppt课件

F
G
H
I
;.
6
二叉树的定义 树的度不超过2的有序树,非常重要的数据结构。
A
B
C
D
F
G
H
I
;.
7
二叉树的性质
性质1:二叉树第i层上至多有2^(i-1)个结点(i≥1) 性质2:深度为h的二叉树至多有2^h-1个结点。
满二叉树:各层结点均达到2^(i-1) 完全二叉树:除最后一层外,其余各层均满,且最后一层的结点集中在左边。
D
E
完全二叉树 理想平衡树
A
B
C
E
G
理想平衡树
10
二叉树的存储结构
1、线性存储 顺序存储二叉树,首先将二叉树按照完全二叉树中对应
的位置进行标号,然后,以每个结点的标号为下标,将对 应的值存储到一个一维数组中。
i 12345678911 01
T ABCDF
G
HI
可见:完全二叉树用顺序存储极好,但一般二叉 树容易造成空间浪费。
end;
end;
;.
13
2.删除二叉树
Procedure dis(Var bt:tree); begin
If bt<>Nil then begin dis(bt^.lchild); {删左子树} dis(bt^.rchild); {删右子树} dispose(bt); {释放父结点} end;
end;
{按先序次序输入二叉树中结点的值,
begin
生成二叉树的单链表存储结构}
read(ch);
if ch=‘’ Then bt:=Nil
{’’表示空树}
else begin
New(bt);

《树和二叉树》PPT课件

《树和二叉树》PPT课件
(3)如果2i+1>n,则结点i无右孩子;否则,其 右孩子是结点2i+1。
2021/7/21
20
完全二叉树上结点之间的关系
[I/2]
i
I+1
i
I+1
2i
2i+1
2i 2i+1 2(I+1) 2i+3 2(I+1) 2i+3
(a)I和i+1结点在同一层
(b)I和i+1结点不在同一层
2021/7/21
2021/7/21
22
顺序存储结构的特点
• 从树根起,自上层至下层,每层自左至右的给所有结点编号缺点是有可能对存储 空间造成极大的浪费,在最坏的情况下,一个深度为H且只有H个结点的右单支树 确需要2h-1个结点存储空间。
• 若经常需要插入与删除树中结点时,则不宜采用顺序存储结构。
2021/7/21
2021/7/21
26
6.3 遍历二叉树和线索二叉树
1 遍历二叉树
➢ 在二叉树的一些应用中,常常要求在树中查找 具有某种特征的结点,或者对树中全部结点逐 一进行某种处理。遍历二叉树即按某条搜索路 径巡访树中的每一个结点,使得每一个结点均 被访问一次,而且仅被访问一次。
➢ “访问”可以是对结点作各种处理,如输出结 点的信息等。
❖ 按层次顺序对二叉树进行遍历。
2021/7/21
29
遍历二叉树的递归算法
➢ 先序遍历二叉树的操作定义为:
若二叉树为空,则空操作;否则
(1)访问根结点;
(2)先序遍历左子树;
(3)先序遍历右子树。
➢ 中序遍历二叉树的操作定义为:
若二叉树为空,则空操作;否则

数据结构之树和二叉树ppt

数据结构之树和二叉树ppt

G D E F
数据结构中讨论的一般都是有序树
清华大学出版社
数据结构(C++版) 数据结构( ++版 ++
5.1 树的逻辑结构
树的基本术语
森林: 棵互不相交的树的集合。 森林:m (m≥0)棵互不相交的树的集合。 棵互不相交的树的集合 A B E K L F C H D J
清华大学出版社
数据结构(C++版) 数据结构( ++版 ++
data parent
data:存储树中结点的数据信息 : parent:存储该结点的双亲在数组中的下标 :
清华大学出版社
数据结构(C++版) 数据结构( ++版 ++
5.1 树的逻辑结构
树的抽象数据类型定义
Parent 前置条件: 前置条件:树已存在 输入:结点x 输入:结点 功能:求结点x的双亲 功能:求结点 的双亲 输出:结点x的双亲的信息 输出:结点 的双亲的信息 后置条件: 后置条件:树保持不变 Depth 前置条件: 前置条件:树已存在 输入: 输入:无 功能: 功能:求树的深度 输出: 输出:树的深度 后置条件: 后置条件:树保持不变
清华大学出版社
数据结构(C++版) 数据结构( ++版 ++
5.1 树的逻辑结构
树的抽象数据类型定义
PreOrder 前置条件: 前置条件:树已存在 输入: 输入:无 功能: 功能:前序遍历树 输出:树的前序遍历序列 输出: 后置条件: 后置条件:树保持不变 PostOrder 前置条件: 前置条件:树已存在 输入: 输入:无 功能:后序遍历树 功能: 输出: 输出:树的后序遍历序列 后置条件: 后置条件:树保持不变 endADT
清华大学出版社
数据结构(C++版) 数据结构( ++版 ++

数据结构树和二叉树ppt

数据结构树和二叉树ppt

A
B
C
D
E
FG
H
I
J
K
LM
树形表示法
(2) 文氏图表示法。使用集合以及集合的 包含关系描述树结构。下图就是树的文氏图 表示法。
A
C B
G EF
J
H D
IK LM
文氏图表示法
(3) 凹入表示法。使用线段的伸缩描述树结 构。下图是树的凹入表示法。
(4) 括号表示法。将树的根结点写在括号的左 边,除根结点之外的其余结点写在括号中并用逗号 间隔来描述树结构。下图是树的括号表示法。
1层 层次 根为第1层
最大层数为树的深度(高度)
2层 height 3层 = 4
双亲 (直接前驱) 孩子(直接后继)
KL
M d=0 4层
兄弟 堂兄弟 子孙 祖先
森林----m(m>=0)棵互不相交的树的集合。
B EF
A BC
树和森林的遍历
A C GH
F DG E
先 深根度次优序先遍遍历历
当树非先空根次序遍历
树孩结子点结结点构的:序da号ta
}link; he指ad向ptr下一个孩子结点typedef struct
特点:很快确定孩子指结向点第一个孩子结点{ dliantkaty*pheeaddapttar;;
每个结点但拥有确孩定子双的亲个效数率不同低,
所以采用单链表链接孩子结点。
}ctree; ctree T[maxnode];
bcd
在二叉树中查找指定结点
?a
? find(BTNode *b, elemtype x) {
b
c
if(b==NULL)
return(NULL); /*空树*/

树和二叉树PPT演示课件

树和二叉树PPT演示课件
} CTree;
12
三、树的孩子-兄弟(二叉链表)表示法
root
A
A
BC D
B C
EF
A
GB C
E
D
F
G
E
D
F
G
13
14
C语言的类型描述: 结点结构: firstchild data nextsibling
typedef struct CSNode{ ElemType data; struct CSNode *firstchild, *nextsibling;
// 返回该树的深度 if ( T.n == 0) return 0; else return Depth( T, T.r );
} // TreeDepth
35
int Depth( CTree T, int root ){
max = 0;
p = T.nodes[root].firstchild;
while ( p ) {
} *ChildPtr;
10
双亲结点结构 data firstchild
typedef struct { ElemType data; ChildPtr firstchild;
// 孩子链的头指针 } CTBox;
11
树结构:
typedef struct { CTBox nodes[MAX_TREE_SIZE]; int n , r ; // 结点数和根结点的位置
45
6.6.1 最优二叉树(赫夫曼树)
路径长度定义为: 从树中一个结点到另一个结点之间
的分支构成这两个结点之间的路径,路 径上的分支数目叫做路径长度。
树的路径长度定义为: 从树根到每个结点的路径长度

《树和二叉树》课件

《树和二叉树》课件
《树和二叉树》PPT课件
"树和二叉树"是计算机科学中重要的数据结构。本课件将详细介绍树和二叉树 的概念、存储结构、遍历方式、二叉搜索树、平衡树等内容。让我们一起探 索这个精彩领域吧!
概念介绍
树的定义及特点
树是由节点和边组成的非线性数据结构,具有分层结构和简洁性。
二叉树的定义及特点
二叉树是一种特殊的树,每个节点最多有两个子节点。
二叉搜索树是一种有序二叉树,左子树节点 都小于根节点,右子树节点都大于根节点。
2 插入和删除节点
通过比较节点值,插入或删除符合条件的节 点,保持二叉搜索树的有序性。
3 查找节点
通过比较节点值,快速定位目标节点。
4 遍历
二叉搜索树支持前序、中序和后序遍历。
平衡树
AVL树
AVL树是一种自平衡的二叉搜索树,通过旋转操作 保持树的平衡。
二叉树的遍历方式
1 先序遍历
先访问根节点,然后按先序遍历左子树,再 按先序遍历右子树。
2 中序遍历
先按中序遍历左子树,然后访问根节点,最 后按中序遍历右子树。
3 后序遍历
先按后序遍历左子树,然后按后序遍历右子 树,最后访问根节点。
4 层序遍历
按层级顺序逐层访问二叉树节点。
二叉搜索树
1 定义及性质
二叉树的分类
根据子节点的数量和排列方式,二叉树可分为满二叉树、完全二叉树和平衡二叉树。
树和二叉树的存储结构
双亲链表存储
使用数组存储节点,并在节点 中保存父节点信息。
孩子链表存储
使用链表存储节点,并在节点 中保存子节点信息。
孩子兄弟链表存储
使用链表存储节点,并在节点 中保存第一个孩子节点和下一 个兄弟节点的信息。

树与二叉树ppt课件

树与二叉树ppt课件

}nodetype;
3.二叉树的基本操作
二叉树的基本操作有: (1)Initiate(bt):建立一棵空二叉树。 (2)Create(x,lbt,rbt):生成一棵以x为根结点的数据域信息,以
lbt和rbt为左、右子树的二叉树。 (3)InsertL(x,Parent):将数据域信息为x的结点插入到二叉树
}nodetype;
int Initiate(nodetype **bt); //1、初始化建立二叉树bt的头结点
nodetype *Create(elemtype x,nodetype *lbt,nodetype *rbt); //2、生成一棵以x为根结点的数据 域值,以lbt和rbt为左右子树的二叉树
void PreOrder(nodetype *bt); //7、前序递归遍历二叉树bt
void InOrder(nodetype *bt); //8、中序递归遍历二叉树bt
void PostOrder(nodetype *bt); //9、后前序递归遍历二叉树bt
点为第二层,其余各层依次类推。 (8)深度:树中结点的最大层次数。 (9)森林:是m(m≥0)棵互不相交的树的集合。 (10)路径:树中存在结点系列,使得Ki是Ki+1的双亲(1≤i≤n-1)。 (11)路径长度:从树根到树中每一结点的路径长度之和。
1.树和二叉树的基本概念
(12)二叉树:或是空集或是由互不相交的子集构成。二叉 树的性质如下:
7、二叉树算法的C程序实现——定义、函数声明
#define elemtype int
#define MAXNODE 100
typedef struct BTreeNode{
elemtype Data;

数据结构第7章树和二叉树习题课PPT课件

数据结构第7章树和二叉树习题课PPT课件

(3)画出二叉树bt的后序线索
a
化树。
b
cd
ef g
hi
j
(3)画出二叉树bt的后序线索 化树。
后序序列
ec hf j i g dba
a
b
cd
ef g
hi
j
(3)画出二叉树bt的后序线索 化树。
0
后序序列 ec hf j i g dba
0a 1

0b 0
root
1
0c1

0 d0
1e1
∧∧
0f1
补1 T={(a,2),(b,3),(c,4),(d,7),(e,9)}为带权字符集, 试构造关于该字符集的一颗哈夫曼树,求其加权路 径长度WPL、T中每个字符的哈曼夫编码和哈夫曼 编码的平均长度。
2 3479
补1 T={(a,2),(b,3),(c,4),(d,7),(e,9)}为带权字符集, 试构造关于该字符集的一颗哈夫曼树,求其加权路 径长度WPL、T中每个字符的哈曼夫编码和哈夫曼 编码的平均长度。
99 45
23
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
15
78
18 99
45
23
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
33
15
78
18 99
45
23
WPL=(2+3)×4+4×3+9× 2+(7+8)× 2 =80
(2)写出按先序、中序和后
a
序遍历二叉树bt所得到的结点
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(2)写出按先序、中序和后
a
序遍历二叉树bt所得到的结点
b
序列;
cd
a.先序序列 ab c e d f h g i j b.中序序列e c b h f dj i g a
b.后序序列e c h f j i g d b a
ef g hi
j
7.1 设二叉树bt的9 10 lchild 0 0 2 3 7 5 8 0 10 1 data j h f d b a c e g i rchild 0 0 0 9 4 0 0 0 0 0
(2)写出按先序、中序和后
a
序遍历二叉树bt所得到的结点
b
序列;
cd
a.先序序列 ab c e d f h g i j e f
g
b.中序序列e c b h f dj i g a
hi
j
7.1 设二叉树bt的一种存储结构如下:
1 2 3 4 5 6 7 8 9 10 lchild 0 0 2 3 7 5 8 0 10 1 data j h f d b a c e g i rchild 0 0 0 9 4 0 0 0 0 0
789 9 45
23
15
78
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
99 45
15
78
23
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
99 45
15
78
18 2 3
补1 T={(a,2),(b,3),(c,4),(d,7),(e,9)}为带权字符集, 试构造关于该字符集的一颗哈夫曼树,求其加权路 径长度WPL、T中每个字符的哈曼夫编码和哈夫曼 编码的平均长度。
99 45
23
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
15
78
18 99
45
23
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
33
15
78
18 99
45
23
WPL=(2+3)×4+4×3+9× 2+(7+8)× 2 =80
(1)画出二叉树的树形表示; 因为第6号结点不是任何结点的孩子结点, 该结点必定是根结点,再根据和结点左、右指针 域的值很容易得到该二叉树的树形表示为
7.1 设二叉树bt的一种存储结构如下:
1 2 3 4 5 6 7 8 9 10 lchild 0 0 2 3 7 5 8 0 10 1 data j h f d b a c e g i rchild 0 0 0 9 4 0 0 0 0 0
(3)画出二叉树bt的后序线索
a
化树。
b
cd
ef g
hi
j
(3)画出二叉树bt的后序线索 化树。
后序序列
ec hf j i g dba
a
b
cd
ef g
hi
j
(3)画出二叉树bt的后序线索 化树。
0
后序序列 ec hf j i g dba
0a 1

0b 0
root
1
0c1

0 d0
1e1
∧∧
0f1
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
2 3478 9
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
2 3478 9
5
23
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
a
序遍历二叉树bt所得到的结点
b
序列;
cd
a.先序序列ab c e d f h g i j e f
g
hi
j
7.1 设二叉树bt的一种存储结构如下:
1 2 3 4 5 6 7 8 9 10 lchild 0 0 2 3 7 5 8 0 10 1 data j h f d b a c e g i rchild 0 0 0 9 4 0 0 0 0 0
4 789 5
23
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
4 789 5
23
9 45
23
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
789 9 45
23
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。

0g 1

方便查找某种 遍历序列的前 驱和后继结点
1

h ∧1
0i 1

1j 1
∧∧
7.3 给定权值集w={2,3,4,7,8,9},试构造关于w 的的一颗哈夫曼树,并求其带权路径长度WPL。
注意,根据课本P187页的构造哈 夫曼树算法,在所生成的哈夫曼树中, 任意一颗子树的左孩子的权值总是小 于或等于右孩子的权值。不可能出现 左孩子的权值大于右孩子权值的情况。
(1)画出二叉树的树形表示;
(2)写出按先序、中序和后序遍历二叉树bt所 得到的结点序列;
(3)画出二叉树bt的后序线索化树。
7.1 设二叉树bt的一种存储结构如下:
1 2 3 4 5 6 7 8 9 10 lchild 0 0 2 3 7 5 8 0 10 1 data j h f d b a c e g i rchild 0 0 0 9 4 0 0 0 0 0
第7章 习题课
7.1 设二叉树bt的一种存储结构如下:
1 2 3 4 5 6 7 8 9 10 lchild 0 0 2 3 7 5 8 0 10 1 data j h f d b a c e g i rchild 0 0 0 9 4 0 0 0 0 0
其中bt为树根结点指针,lchild、rchild分别为 结点的左、右孩子指针域,在这里使用结点编号 作为指针域值,0表示指针域为空;data为结点的 数据域。请完成下列各题:
(1)画出二叉树的树形表示;
a
b
cd
ef g
hi
j
7.1 设二叉树bt的一种存储结构如下:
1 2 3 4 5 6 7 8 9 10 lchild 0 0 2 3 7 5 8 0 10 1 data j h f d b a c e g i rchild 0 0 0 9 4 0 0 0 0 0
(2)写出按先序、中序和后
相关文档
最新文档