第6章树形结构514页PPT

合集下载

六章树ppt课件

六章树ppt课件
1
2
3
4
5
6
7
8 9 10 11
12 13 14 15
16 17
则有以下关系:
若i == 1, 则 i 无双亲
若i > 1, 则 i 的双亲为i /2
若2*i <= n, 则 i 的左子女为2*i;否则,i无左子女, 必定是叶结点,二叉树中i> n/2 的结点必定是叶 结点
若2*i+1 <= n, 则 i 的右子女为2*i+1,否则,i无右 子女
}
先序遍历 (Preorder Traversal)
先序遍历二叉树算法的定义:
若二叉树为空,则空操作; 否则
访问根结点 (V); 先序遍历左子树 (L); 先序遍历右子树 (R)。
遍历结果 -+ a * b -c d / e f
先序遍历二叉树的递归算法
void PreOrder ( BiTreeNode *T ) { if ( T != NULL ) { Visit( T->data); PreOrder ( T->leftChild ); PreOrder ( T->rightChild ); }
V
L
R
中序遍历 (Inorder Traversal)
中序遍历二叉树算法的定义:
若二叉树为空,则空操作; 否则
中序遍历左子树 (L); 访问根结点 (V); 中序遍历右子树 (R)。
遍历结果 a+b*c-d-e/f
中序遍历二叉树的递归算法
void InOrder ( BiTreeNode *T ) { if ( T != NULL ) { InOrder ( T->leftChild ); //递归 Visit( T->data); InOrder ( T->rightChild ); //递归 }

数据结构第6章树和二叉树基本概念和二叉树ppt课件

数据结构第6章树和二叉树基本概念和二叉树ppt课件

§6.2 二叉树
❖二叉树的定义
或者是空树,或者是由一个根结点加上两棵 分别称为左子树和右子树的、互不相交的二叉树 组成。
二叉树的结点的子树要区分左子树和右子树, 即使在结点只有一棵子树的情况下也要明确指出 该子树是左子树还是右子树。
§6.2 二叉树
❖二叉树的定义
逻辑结构: 一对二(1:2) 基本特征: ① 每个结点最多只有两棵子树(不存在度大于2的结点) ② 左子树和右子树次序不能颠倒(有序树)。 基本形态:
§6.1 树的基本概念
❖树的基本术语
结点 ——即树的数据元素 结点的度 ——结点挂接的子树数
(有几个直接后继就是几度, 亦称“次数”) 结点的层次 ——从根到该结点的层数(根结点算第一层) 终端结点 ——即度为0的结点,即叶子 分支结点 ——即度不为0的结点(也称为内部结点) 树的度 ——所有结点度中的最大值(Max{各结点的度}) 树的深度 ——指所有结点中最大的层数(Max{各结点的层次}) (或高度)
二叉树的运算仍然是插入、删除、修改、查找、排序等,但这些操 作必须建立在对树结点能够“遍历”的基础上! (遍历——指每个结点都被访问且仅访问一次,不遗漏不重复)。
§6.2 二叉树
❖二叉树的性质
讨论1:第i层的结点数至多是多少? 2i-1个
1
2
3
(二进制性质)
4
5
6
7
8 9 10 11 12 13 14 15
特点:每层都“充满”了结点
§6.2 二叉树
❖两种特殊形式的二叉树
完全二叉树:树中所含的n个结点和满二叉树中编号 为1至n的结点一一对应
(例如删除A后的子树个数) 有序树 ——结点各子树从左至右有序,不能互换(左为第一) 无序树 ——结点各子树可互换位置。

树型结构PPT课件

树型结构PPT课件
纯理论的东西,没有使用价值。
树的存储结构
父亲表示法: 定义一个数组,每个数组元素为一个记录,
除了存放一个结点的数据信息外,还存放该 结点的父结点编号。数据结构定义如下:
const m=10;{树的度} type node=record
data:integer; parent:integer; end; var tree:array [1..m] of node;
end; var t:tree;
【例题】单词查找树
在进行文法分析的时候,通常需要检测一个单词是否在我们的单 词列表里。为了提高查找和定位的速度,通常都画出与单词列表对应 的单词查找树,其特点如下:
(1)根结点不包含字母,除根结点外每一个结点都仅包含一个大写 英文字母;
(2)从根节点到某一节点,路径上经过的字母一次连起来所构成的 字母序列,称为该节点对应的单词。单词列表中的每个单词,都是该 单词查找树某个结点所对应的单词;
father:tree
end;
var t:tree;
树的存储结构
孩子兄弟表示法: 每个结点包括一个数据域和两个指针域,
一个指针指向该结点的第一个孩子结点, 一个指针指向该节点的下一个兄弟结点。
const m=10; type tree=^node;
node=record; data:char; firstchild,nex每个元素称为结点; 有一个特定的结点,称为根结点或树根; 除根结点外,其余结点被分成m个互不相交
的有限集合,而每一个子集又都是一棵树。
树的基本概念
度:入度,出度; 祖宗,父亲,兄弟,儿子,子孙; 树的深度(层次); 路径; 森林。
树的表示方法
图形表示法; 括号表示法。

第6章树和二叉树好精品PPT课件

第6章树和二叉树好精品PPT课件
或深度为k的满二叉树中编号从1到n的前n个结点构成了一棵深度 为k的完全二叉树。
其中 2k-1 ≦ n≦2k-1 。
完全二叉树是满二叉树的一部分,而满二叉树是完全二叉树的特 例。
•完全二叉树的特点:
若完全二叉树的深度为k ,则所有的叶子结点都出现在第k层
或k-1层。对于任一结点,如果其右子树的最大层次为l,则其左 子树的最大层次为l或l+1。
结点的层次:从根开始定义为第1层,根的孩子
v
为第二层……。
树的深度(高度):树中结点的最大层数。
森林(forest):是m(m ≥ 0)棵互不相交的树
的集合。
6.2 二叉树
6.2.1 二叉树的定义 1 二叉树的定义
二叉树(Binary tree)是n(n≥0)个结点的有限集 合。若n=0时称为空树,否则: ⑴ 有且只有一个特殊的称为树的根(Root)结点; ⑵ 若n>1时,其余的结点被分成为二个互不相
(a) 二叉链表结点
(b) 三叉链表结点
图6-7 链表结点结构形式
(2) 二叉树的链式存储形式
例有一棵一般的二叉树,如图6-8(a)所示。以二叉链表和三叉链表 方式存储的结构图分别如图6-8(b) 、 6-8(c)所示。
a b cd
T a⋀
b ⋀c ⋀ d
T a ⋀⋀
b ⋀c ⋀ d
交的子集T1,T2,分别称之为左、右子树,并 且左、右子树又都是二叉树。 由此可知,二叉树的定义是递归的。
2 二叉树的基本形态 二叉树有5种基本形态,如图6-3所示。
AA
A
A
(a) (b)
(c) (d)
(e)
(a) 空二叉树 (b) 单结点二叉树 (c) 右子树为空

数据结构第6章树和二叉树3树和森林ppt课件

数据结构第6章树和二叉树3树和森林ppt课件

§6.4 树和森林 ❖树的存储结构——孩子兄弟表示法
这种存储结构便于实现各种树的操作。首先易于 实现找结点孩子等的操作。如果为每个结点增设一个 (parent)域,则同样能方便地实现Parent(T, x)操作。
§6.4 树和森林
❖森林和二叉树的转换
1. 树和二叉树的对应关系 由于二叉树和树都可用二叉链表作为存储结构,
R AB C
DE
F
GHK
R^
A
^D
^B
^E ^
C^
F^
^G
^H
^K ^
§6.4 树和森林
❖树的二叉链表(孩子 - 兄弟)存储表示
typedef struct CSNode { Elem data; struct CSNode *firstchild , *nextsibling;
} CSNode, *CSTree;
A BC D E F GH
A BC D
E F GH A
BC D
1)在兄弟之间加一条连线; 2)对每个结点,除了左孩子外,去除其与其余孩子之间的联系; 3)以根结点为轴心,将整个树顺时针转45°。
Ia
A B
Ib
E F
d
C D
G H I
c E F G H I
§6.4 树和森林
❖森林和二叉树的转换
2. 森林和二叉树的对应关系 从树的二叉链表表示的定义可知,任何一棵
§6.4 树和森林
3
6^
5^
0
1
7
8
2^ 9^
R AB C
DE
F
GHK
§6.4 树和森林 ❖树的存储结构——孩子兄弟表示法
或称二叉树表示法,或称二叉链表表示法。即以 二叉链表作树的存储结构。链表中结点的两个链域分 别指向该结点的第一个孩子结点和下一个兄弟结点。

数据结构C语言版教学课件ppt作者李云清第06章_树型结构

数据结构C语言版教学课件ppt作者李云清第06章_树型结构

第6章 树型结构树的基本概念树的遍历树的线性表示树类的定义树的存储结构6.1 树的基本概念树是由n (n≥0)个结点构成的有限集合,n=0的树称为空树;当n≠0时,树中的结点应该满足以下两个条件:(1)有且仅有一个特定的结点称之为根;(2) 其余结点分成m(m≥0)个互不相交的有限集合T1,T2,……Tm,其中每一个集合又都是一棵树,称T 1, T2,……Tm为根结点的子树。

B DE F GAH IJ KC图6.1在树中采用线段连接两个相关联的结点,如A和B,D和H等。

其中A和D是上端结点,B和H是下端结点。

称A、D分别是B、H的双亲(或父母或前件),B和H分别为A和D的子女(或孩子或后件)。

显然,双亲和子女的关系是相对而言的。

图6.1中,B是A的子女,但又是E和F 的双亲。

由于E和F的双亲为同一结点,称E和F互为兄弟。

在任何一棵树中,除根结点外,其它任何一个结点有且仅有一个双亲,有0个或多个子女,且它的子女恰巧为其子树的根结点。

我们将一结点拥有的子女数称为该结点的度,树中所有结点度的最大值称为树的度。

图6.1中,A的度为3,B的度为2,而C的度为0,整棵树的度为3。

称度为0的结点为终端结点或叶子结点,称度不为0的结点为非终端结点或分支结点。

显然,A、B、D、H均为分支结点,而E、F、C、G、J、K、I均为叶子结点。

称树中连接两个结点的线段为树枝。

在树中,若从结点Ki 开始沿着树枝自上而下能到达结点Kj,则称从Ki 到Kj存在一条路径,路径的长度等于所经过的树枝的条数。

在图6.1中,从结点A到结点J存在一条路径,路径的长度为3;从D到K也存在一条路径,路径的长度为2。

仔细观察不难发现,从树根到树中任何一个结点均存在一条路径。

将从树根到某一结点Ki 的路径中Ki前所经过的所有结点称为Ki 的祖先;反之,以某结点Ki为根的子树中的任何一个结点都称为Ki 的子孙。

图6.1中,A、D、H均为J和K的祖先,而G、H、I、J和K均为D的子孙。

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

根结点:F 左先序:空 左中序:空 右先序:空 右中序:空
根结点:G 左先序:空 左中序:空 右先序:空 右中序:空
21.09.2019
第六章 树和二叉树
10
定理6.2:任何n(n>0)个不同结点的二又树,都可 由它的中序序列和后序序列惟一地确定。
通 过an-1在 中 序 序 列
根 结 点
根 结 点
21.09.2019
第六章 树和二叉树
4
对应的哈夫曼编码如下: 1:000 3:001 5:01 7:1
21.09.2019
第六章 树和二叉树
5
哈夫曼编码举例
• 例:已知某系统在通信联络中可能出现8种字符, 其概率为0.05, 0.29, 0.07, 0.08, 0.l4, 0.23, 0.03, 0.11, 试设计哈夫曼编码。
译码。
21.09.2019
第六章 树和二叉树
1
哈夫曼树的构造过程
752 abc
(a)
7
11
a
b
c (c)
21.09.2019
4

6
d
ab
(b)
c
d
18
a
b d
(d) c
d
第六章 树和二叉树
2
哈夫曼算法(构造哈夫曼树)
① (构其结1中造 点)根每n,其棵据棵左二给二、叉定叉右树的树子的n中树个集均为权合只空值F含树{=一w; {个1T,带1w,权2T,值2…,为…, ww, iT的n}n}根,, ② (2)在F中选取其根结点的权值为最小的两棵二
• 解:设权w=(5,29,7,8,14,23,3,11), 根据 哈夫曼算法可构造哈夫曼树。 0 1
0 10 1
23
29
010 1
11
0
14
10
1
53 78
21.09.2019
第六章 树和二叉树
6
6.6 二叉树的构造
同一棵二叉树具有惟一先序序列、中序序列和 后序序列,但不同的二叉树可能具有相同的先序序列、 中序序列和后序序列。
根结点:D 左中序:空 左根:空 右中序:G 右根:G
根结点:E 左中序:空 左根:空 右中序:空 右根:空
根结点:F 左中序:空 左根:空 右中序:空 右根:空
根结点:G 左中序:空 左根:空 右中序:空 右根:空
21.09.2019
第六章 树和二叉树
12
二叉树的构造过程
• 先序序列:A B C D E F G 中序序列:C B E D A F G
结 点
个 结 点
21.09.2019
第六章 树和二叉树
11
例如,已知中序序列为DGBAECF,后序序列为 GDBEFCA。对应的构造二叉树的过程如下所示。
根结点:A 左中序:DGB 左根:B 右中序:ECF 右根:C
根结点:B 左中序:DG 左根:D 右中序:空 右根:空
根结点:C 左中序:E 左根:E 右中序:F 右根:F
叉树,分别作为左、右子树构造一棵新的二叉 树,并置这棵新的二叉树根结点的权值为其左、 右子树根结点的权值之和; ③ (3)从F中删去这两棵树,同时加入刚生成的新 树; 重复(2)和(3)两步,直至F中只含一棵树 为止。
21.09.2019
第六章 树和二叉树
3
哈夫曼编码
• 规定哈夫曼树中的左分支为0,右分支为1, 则从根结点到每个叶结点所经过的分支对 应的0和1组成的序列便为该结点对应字符 的编码。这样的编码称为哈夫曼编码。
21.09.2019
第六章 树和二叉树
7
定理6.1:任何n(n≥0)个不同结点的二又树,都可由 它的中序序列和先序序列惟一地确定。
21.09.2019
第六章 树和二叉树
8
根 结 点
通 过a0在 中 序 序 列 中 找 到bk
根 结 点
先 序 序 列 : a0a1 …akak+1 …an-1 中 序 序 列 : b0b1 …bk-1bkbk+1 …bn-1
中 找 到bk
后 序 序 列 : a0a1 …ak-1ak …an-2an-1
中 序 序 列 : b0b1 …bk-1bkbk+1 …bn-1
左子树后右 子 树 后 序 序
序 序 列 ,有k 列 ,有n-k-1个 个 结 点 结 点
左 子 树 中 序 右子树中序
序 列 ,有 k个 序 列 ,有n-k-1
最优二叉树(哈夫曼树)
• 假设有n个权值{w1, w2, …, wn},构造一 棵有 n个叶子结点的二叉树,每个叶子结点带 权为wi ,则其中带权路径长度WPL最小的二 叉树称做最优二叉树或哈夫曼树。
• 权值越大的结点离根越近的二叉树才是最优二 叉树。
• 哈夫曼树不唯一。 • 哈夫曼树是一种最优树,可用于电位的编码和
左 子 树 先 序右子树先序
序 列 ,有k个序 列 ,有n-k-1
结 点
个 结 点
左 子 树 中 序 右子树中序
序 列 ,有k个 序 列 ,有n-k-1
结 点
个 结 点
21.09.2019
第六章 树和二叉树
9
例如,已知先序序列为ABDGCEF,中序序列为 DGBAECF,则构造二叉树的过程如下所示。
21.09.2019
第六章 树和二叉树
13
根结点:A 左先序:BDG 左中序:DGB 右先序:CEF 右中序:ECF
根结点:B 左先序:DG 左中序:DG 右先序:空 右中序:空
根结点:C 左先序:E 左中序:E 右先序:F 右中序:F
根结点:D 左先序:空 左中序:空 右先序:G 右中序:G
根结点:E 左先序:空 左中序:空 右先序:空 右中序:空
相关文档
最新文档