自考数据结构导论02142第4章.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章
4.1 树的基本概念 4.2 二叉树 4.3 二叉树的存储结构 4.4 二叉树的遍历 4.5 树和森林 4.6 哈夫曼树
1
第四章
4.1 树的定义和基本术语
树型结构是一类重要的非线性结构。树型结构是结点之间有分支, 并且具有层次关系的结构,它非常类似于自然界中的树。树结构在客观 世界中是大量存在的,例如家谱、行政组织机构都可用树形象地表示。 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示 源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法 的行为时,可用树来描述其执行过程等等。
11
4.2.2 二叉树的性质(★)
第四章
二叉树具有下列重要性质:
1、性质1: 在二叉树的第i(i>=1)层上至多有2i-1个 结点。
2、性质2:深度为k(k>=1)的二叉树至多有2k- 1个结点。
3、性质3:对任何一棵二叉树,如果其终端结点 数为n0,度为2的结点数为n2,则n0=n2+1。
即:叶结点数n0=度为2的结点数n2+1
10
第四章
➢ 中序遍历InOrder(BT):按中序对二叉树BT进行 遍历,每个结点被访问一次且仅被访问一次, 若BT为空,则运算为空操作。
➢ 后序遍历PreOrder(BT):按后序对二叉树BT进 行遍历,每个结点被访问一次且仅被访问一次, 若BT为空,则运算为空操作。
➢ 层次遍历LevelOrder(BT):按层从上往下,同一 层中结点按从左往右的顺序,对二叉树进行遍 历,每个结点被访问一次且仅被访问一次,若 BT为空,则运算为空操作。
结点的度:该结点的子树数(即分支数)。
●度—— 树的度:树中结点的度最大值。
●叶子(终端结点)——度为零的结点。 ●非终端结点——度不为零的结点。 ●孩子(子结点)——结点的子树的根称为该结点的孩子。 ●双亲(父结点)——一个结点称为该结点所有子树根的双亲。
●祖先——结点祖先指根到此结点的一条路径上的所有结点。
▲另三种表示法
a、文氏图法: E
C
EB F
GD
A
b、嵌套括号法: (根(子树,子树…子树)) ( A ( B ( E, F ), C , D ( G ) )
B CD
F
G
c、凹入法表示:
根A
B
E F
C D
G
第二层 第三层
3
第四章
三、树的基本术语 ●结点—由一个数据元素及若干指向其它结点的分支所组成。
一、树的定义
树——是n(n>=0)个结点的有限集T,满足:
(1)有且仅有一个特定的称为根的结点;
(2)其余的结点可分为m(m>=0)个互不相交的子集 T1,T2,T3…Tm,其中每个子集Ti又是一棵树, 并称其为子树。 递归是树的固有特性
2
第四章
二、树的逻辑表示
▲一般表示法(直观表示法):
A ——第一层
3、二叉树与树的比较:
结点 子 树
结点顺序
树 n ≥ 0 不定(有限)
无
二叉树 n≥0
≤2
有(左、右)
8
4.2.1 二叉第树四的章定义
二叉树结点的子树要区分左子树和右子树,即使只有一棵子树也 要进行区分,说明它是左子树,还是右子树。这是二叉树与树的最 主要的差别。下图列出二叉树的5种基本形态,图(C) 和(d)是不 同的两棵二叉树。
12
4.2.2 二叉树第的四性章质
▲满二叉树——深度为k(k>=1)且有2k-1个结点的 二叉树。
A
A
A
A
(a)
空二叉树
(b)
根和空的 左右子树
(c)
(d)
根和左子树 根和右子树
二叉树的5种形式
(e)
根和左右子树
9
4、二叉树的基本操作(见P77)
第四章
➢ 初始化Initiate(BT):建立一棵空二叉树,BT=∅。
➢ 求双亲Parent(BT,X):求出二叉树BT上结点X的双亲结点, 若X是BT的根或X根本不是BT上的结点,运算结果为 NULL。
不能互换,称为有序树。 ●无序树——若树中各结点的子树是无次序的,
可以互换,则成为无序树。
●森林——是m(≥0)棵树的集合。
5
四、树的基本操作
第四章
➢ 求根Root(T):求树T的根结点;
➢ 求双亲Parent(T,X):求结点X在树T上的双亲; 若X是树T的根或X不在T上,则结果为一特殊 标志;
➢ 求左孩子Lchild(BT,X)和求右孩子Rchild(BT,X):分别求 出二叉树BT上结点X的左、右孩子;若X为BT的叶子或X 补在BT上,运算结果为NULL。
➢ 建二叉树Create(BT):建立一棵二叉树BT。
➢ 先序遍历PreOrder(BT):按先序对二叉树BT进行遍历,每 个结点被访问一次且仅被访问一次,若BT为空,则运算 为空操作。
➢ 遍历Traverse Tree(T):遍历树,即访问树中每 个结点,且每个结点仅被访问一次。
6
4.2 二叉树
第四章
二叉树在树结构的应用中起着非常重要的作用,因为二叉树有许多 良好的性质和简单的物理表示,而任何树都可以与二叉树相互转换,这 样就解决了树的存储结构及其运算中存在的复杂性。
4.2.1 二叉树的基本概念
●子孙——从某结点到叶结点的分支上的所有结点称为该结 点的子孙。
●兄弟——同一双亲的孩子之间互称兄弟。
4
第四章
●结点的层次——从根算起,根为第一层,其孩子在第二层, …., L层上任何结点的孩子都在L+1层上。
●堂兄弟——其双亲在同一层的结点。 ●树的深度——树中结点的最大层次。 ●有序树——若树中各结点的子树从左到右是有次序的,
➢ 求孩子Child(T,X,i):求树T上结点X的第i个孩子 结点;若X不在T上或X没有第i个孩子,则结 果为一特殊标志;
➢ 建树Create(X,T1,…,Tk),k>1:建立一棵以X为根, 以T1,…,Tk为第1,…,k棵子树的树;
➢ 剪枝Delete(T,X,i):删除树T上结点X的第i棵子 树;若T无第i棵子树,则为空操作;
1、定义:
二叉树是n(n>=0)个结点的有限集合,它或为空(n=0), 或是由一个根结点及两棵互不相交的左、右 子树组成,且每棵子树都是二叉树。 A
这是一个递源自文库定义。 二叉树可以是空集合, 根可以有空的左子树 或空的右子树。
B
C
D
E
F
G
H
7
第四章
2、特点: ①二叉树可以是空的,称空二叉树; ②每个结点最多只能有两个孩子; ③子树有左、右之分且次序不能颠倒。
4.1 树的基本概念 4.2 二叉树 4.3 二叉树的存储结构 4.4 二叉树的遍历 4.5 树和森林 4.6 哈夫曼树
1
第四章
4.1 树的定义和基本术语
树型结构是一类重要的非线性结构。树型结构是结点之间有分支, 并且具有层次关系的结构,它非常类似于自然界中的树。树结构在客观 世界中是大量存在的,例如家谱、行政组织机构都可用树形象地表示。 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示 源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法 的行为时,可用树来描述其执行过程等等。
11
4.2.2 二叉树的性质(★)
第四章
二叉树具有下列重要性质:
1、性质1: 在二叉树的第i(i>=1)层上至多有2i-1个 结点。
2、性质2:深度为k(k>=1)的二叉树至多有2k- 1个结点。
3、性质3:对任何一棵二叉树,如果其终端结点 数为n0,度为2的结点数为n2,则n0=n2+1。
即:叶结点数n0=度为2的结点数n2+1
10
第四章
➢ 中序遍历InOrder(BT):按中序对二叉树BT进行 遍历,每个结点被访问一次且仅被访问一次, 若BT为空,则运算为空操作。
➢ 后序遍历PreOrder(BT):按后序对二叉树BT进 行遍历,每个结点被访问一次且仅被访问一次, 若BT为空,则运算为空操作。
➢ 层次遍历LevelOrder(BT):按层从上往下,同一 层中结点按从左往右的顺序,对二叉树进行遍 历,每个结点被访问一次且仅被访问一次,若 BT为空,则运算为空操作。
结点的度:该结点的子树数(即分支数)。
●度—— 树的度:树中结点的度最大值。
●叶子(终端结点)——度为零的结点。 ●非终端结点——度不为零的结点。 ●孩子(子结点)——结点的子树的根称为该结点的孩子。 ●双亲(父结点)——一个结点称为该结点所有子树根的双亲。
●祖先——结点祖先指根到此结点的一条路径上的所有结点。
▲另三种表示法
a、文氏图法: E
C
EB F
GD
A
b、嵌套括号法: (根(子树,子树…子树)) ( A ( B ( E, F ), C , D ( G ) )
B CD
F
G
c、凹入法表示:
根A
B
E F
C D
G
第二层 第三层
3
第四章
三、树的基本术语 ●结点—由一个数据元素及若干指向其它结点的分支所组成。
一、树的定义
树——是n(n>=0)个结点的有限集T,满足:
(1)有且仅有一个特定的称为根的结点;
(2)其余的结点可分为m(m>=0)个互不相交的子集 T1,T2,T3…Tm,其中每个子集Ti又是一棵树, 并称其为子树。 递归是树的固有特性
2
第四章
二、树的逻辑表示
▲一般表示法(直观表示法):
A ——第一层
3、二叉树与树的比较:
结点 子 树
结点顺序
树 n ≥ 0 不定(有限)
无
二叉树 n≥0
≤2
有(左、右)
8
4.2.1 二叉第树四的章定义
二叉树结点的子树要区分左子树和右子树,即使只有一棵子树也 要进行区分,说明它是左子树,还是右子树。这是二叉树与树的最 主要的差别。下图列出二叉树的5种基本形态,图(C) 和(d)是不 同的两棵二叉树。
12
4.2.2 二叉树第的四性章质
▲满二叉树——深度为k(k>=1)且有2k-1个结点的 二叉树。
A
A
A
A
(a)
空二叉树
(b)
根和空的 左右子树
(c)
(d)
根和左子树 根和右子树
二叉树的5种形式
(e)
根和左右子树
9
4、二叉树的基本操作(见P77)
第四章
➢ 初始化Initiate(BT):建立一棵空二叉树,BT=∅。
➢ 求双亲Parent(BT,X):求出二叉树BT上结点X的双亲结点, 若X是BT的根或X根本不是BT上的结点,运算结果为 NULL。
不能互换,称为有序树。 ●无序树——若树中各结点的子树是无次序的,
可以互换,则成为无序树。
●森林——是m(≥0)棵树的集合。
5
四、树的基本操作
第四章
➢ 求根Root(T):求树T的根结点;
➢ 求双亲Parent(T,X):求结点X在树T上的双亲; 若X是树T的根或X不在T上,则结果为一特殊 标志;
➢ 求左孩子Lchild(BT,X)和求右孩子Rchild(BT,X):分别求 出二叉树BT上结点X的左、右孩子;若X为BT的叶子或X 补在BT上,运算结果为NULL。
➢ 建二叉树Create(BT):建立一棵二叉树BT。
➢ 先序遍历PreOrder(BT):按先序对二叉树BT进行遍历,每 个结点被访问一次且仅被访问一次,若BT为空,则运算 为空操作。
➢ 遍历Traverse Tree(T):遍历树,即访问树中每 个结点,且每个结点仅被访问一次。
6
4.2 二叉树
第四章
二叉树在树结构的应用中起着非常重要的作用,因为二叉树有许多 良好的性质和简单的物理表示,而任何树都可以与二叉树相互转换,这 样就解决了树的存储结构及其运算中存在的复杂性。
4.2.1 二叉树的基本概念
●子孙——从某结点到叶结点的分支上的所有结点称为该结 点的子孙。
●兄弟——同一双亲的孩子之间互称兄弟。
4
第四章
●结点的层次——从根算起,根为第一层,其孩子在第二层, …., L层上任何结点的孩子都在L+1层上。
●堂兄弟——其双亲在同一层的结点。 ●树的深度——树中结点的最大层次。 ●有序树——若树中各结点的子树从左到右是有次序的,
➢ 求孩子Child(T,X,i):求树T上结点X的第i个孩子 结点;若X不在T上或X没有第i个孩子,则结 果为一特殊标志;
➢ 建树Create(X,T1,…,Tk),k>1:建立一棵以X为根, 以T1,…,Tk为第1,…,k棵子树的树;
➢ 剪枝Delete(T,X,i):删除树T上结点X的第i棵子 树;若T无第i棵子树,则为空操作;
1、定义:
二叉树是n(n>=0)个结点的有限集合,它或为空(n=0), 或是由一个根结点及两棵互不相交的左、右 子树组成,且每棵子树都是二叉树。 A
这是一个递源自文库定义。 二叉树可以是空集合, 根可以有空的左子树 或空的右子树。
B
C
D
E
F
G
H
7
第四章
2、特点: ①二叉树可以是空的,称空二叉树; ②每个结点最多只能有两个孩子; ③子树有左、右之分且次序不能颠倒。