数据结构 树ppt
合集下载
数据结构第六章树和二叉树.ppt
线性表
A 线性结构
栈
队 1.数据的逻辑结构
数 据
树形结构 B 非线性结构
结
构
图形结构
的
三 个
2、数据的存储结构 A 顺序存储
方 面
B 链式存储
3、数据的运算:检索、排序、插入、删除、修改等。
第六章 树和二叉树
6.1 树的定义和基本术语 6.2 二叉树
6.2.1 二叉树的定义 6.2.2 二叉树的性质 6.2.3 二叉树的存储结构
TraverseTree ( T,Visit() ) ; 初始条件:树t存在, Visit是对结点操作的应用函数。 操作结果:按某种次序对T的每个结点调用函数Visit ()一次且至 多一次。一旦Visit ()失败,则操作失败。
堂兄弟——其双亲在同一层的结点互为堂兄弟。K L
M
结点的层次(level)——从根结点算起,根为第一层,它的孩子为第二层…。
深度(depth)——树中结点的最大层次数。
森林(forest)——m(m0)棵互不相交的树的集合。
树的抽象数据类型定义:
ADT Tree{ 数据对象D:D是具有相同特性的数据元素的集合。 数据关系R:若D为空集,则称为空树; 若D仅含一个数据元素,则R为空集,否则R={H},H是如下二元关系: (1)在D中存在唯一的称为根的数据元素root,它在关系H下无前驱; (2)若D-{root}≠Ф,则存在D-{root}的一个划分D1, D2, ..., Dm (m>0),对任意j≠k(1≤j,k≤m)有Dj∩Dk=φ ,且对任意 的i(1≤i≤m),唯一存在数据元素xi∈Di,有<root,xi> ∈ H; (3)对应于D-{root}的划分,H-{<root,x1>,....,<root,xm>} 有唯一的一个划分H1 , H2 ,..., Hm (m>0),对任意j≠k (1≤j,k≤m)有Hj∩Hk=Ф ,且对任意的i(1≤i≤m),Hi 是Di上 的二元关系,(Di ,{Hi})是一棵符合本定义的树,称为根root的子 树。
A 线性结构
栈
队 1.数据的逻辑结构
数 据
树形结构 B 非线性结构
结
构
图形结构
的
三 个
2、数据的存储结构 A 顺序存储
方 面
B 链式存储
3、数据的运算:检索、排序、插入、删除、修改等。
第六章 树和二叉树
6.1 树的定义和基本术语 6.2 二叉树
6.2.1 二叉树的定义 6.2.2 二叉树的性质 6.2.3 二叉树的存储结构
TraverseTree ( T,Visit() ) ; 初始条件:树t存在, Visit是对结点操作的应用函数。 操作结果:按某种次序对T的每个结点调用函数Visit ()一次且至 多一次。一旦Visit ()失败,则操作失败。
堂兄弟——其双亲在同一层的结点互为堂兄弟。K L
M
结点的层次(level)——从根结点算起,根为第一层,它的孩子为第二层…。
深度(depth)——树中结点的最大层次数。
森林(forest)——m(m0)棵互不相交的树的集合。
树的抽象数据类型定义:
ADT Tree{ 数据对象D:D是具有相同特性的数据元素的集合。 数据关系R:若D为空集,则称为空树; 若D仅含一个数据元素,则R为空集,否则R={H},H是如下二元关系: (1)在D中存在唯一的称为根的数据元素root,它在关系H下无前驱; (2)若D-{root}≠Ф,则存在D-{root}的一个划分D1, D2, ..., Dm (m>0),对任意j≠k(1≤j,k≤m)有Dj∩Dk=φ ,且对任意 的i(1≤i≤m),唯一存在数据元素xi∈Di,有<root,xi> ∈ H; (3)对应于D-{root}的划分,H-{<root,x1>,....,<root,xm>} 有唯一的一个划分H1 , H2 ,..., Hm (m>0),对任意j≠k (1≤j,k≤m)有Hj∩Hk=Ф ,且对任意的i(1≤i≤m),Hi 是Di上 的二元关系,(Di ,{Hi})是一棵符合本定义的树,称为根root的子 树。
软件技术ppt第3章 数据结构3(树和图)
E
K
F
L
3.3.4 树的应用
应用于分类、检索、数据库及人工智能等多个方面。
哈夫曼树
是一类带权路径最短的树。如用于通讯及数据传送中构造传送
效率最高的二进制编码(哈夫曼编码),用于编程中构造平均执 行时间最短的最佳判断过程。
例:
A
1) 哈夫曼树的有关概念
B
C
• 结点间的路径长度:从树中 一个结点到另一个结点之 间的分支个数。
A:10, B:9, C:21, D:2
• 树的带权路径长度:树中所有带权结 点的路径长度之和,常记作WPL。
树的带权路径长度:
(a) WPL = 10+9+21+2 = 42 (b) WPL = 10+6+14+4 = 34 (c) WPL = 7+10+9+6 = 32
例:
D2 A5
B3 C 7 (a)
5 3 72 A BCD
57 AC
5 BD
10 7 CA
BD
C A BD
哈夫曼树的应用:
在解决某些判定问题时的最佳判定算法。
例: 将学生百分成绩按分数段分级的程序。
若学生成绩分布是均匀的,可用二叉树结构来
实现。
a<60
Y
N
输入10000个
不及格 a<70
Y
N
数据,则需进 行28000次比
较。
及格
a<80
A 5 B 3 C7 D 2
(b)
• 哈夫曼树:设有n个权值{w1,w2,…, wn},构造一棵有n个叶子结点的二叉树 ,每个叶子结点带权为wi,1≤i≤n,则带权 路径长度最小的二叉树称哈夫曼树,也 称最优二叉树。
数据结构6章 树、二叉树PPT资料34页
root
A
B
C
B
∧C
D
E
G
(a) 二叉树
∧D ∧
∧E ∧ (b) 链式存储结构
∧G ∧
2020/5/29
6.2.4 声明二叉树类
1.二叉树的结点类
package ds_java; public class TreeNode1 {
public String data; public TreeNode1 left,right; public TreeNode1() {
}
}
2020/5/29
3.按后根次序遍历二叉树的递归 算法
public void postorder(TreeNode1 p)
{
//后根次序遍历二叉树
if(p!=null)
{
postorder(p.left);
postorder(p.right);
depth=3
E
F
G
H
I
J level=3
(a) n=0 空树
(b) n=1 树中只有一个根结点
(c) n=10,度为3的树
2020/5/29
6.1.2 树的术语
1.结点 2.孩子结点与双亲结点 3.兄弟结点 4.结点的度 5.叶子结点与分支结点 6.树的度
7.结点的层次 8.树的深度或高度 9.森林
– 当n>1时,除根结点之外的其他结点分为m(m≥0)个互不相交的集合 T1, T2, …, Tm,其中每个集合Tm(1≤i≤m)本身又是一棵结构与树类 同的子树(subtree)。每棵子树的根结点有且仅有一个直接前驱结点 ,但可以有零或多个直接后继结点。
root
root
数据结构PPT(树和二叉树)
安
徽 理
第6章 树和二叉树
工
大 本章学习导读
学
树型结构是一类重要的非线性结构。它的特点是结点之
间有分支,并具有明显的层次关系的结构。树在计算机领
域中有着广泛的应用,例如在编译程序中,用树来表示源
程序的语法结构;在数据库系统中,可用树来组织信息;
在分析算法的行为时,可用树来描述其执行过程。
本章重点讨论二叉树的存储表示及其各种运算,并研究
假设对所有j, 1≤j﹤i,命题成立,即第j层上至多有2 j-1 个
结点。
由归纳假设第i-1 层上至多有 2i -2个结点。
由于二叉树的每个结点的度至多为2,故在第i层上的最大结
点数为第i-1层上的最大结点数的2倍,即2×2i -2= 2 i-1。
安
徽 理
6.2.2 二叉树的性质
工
大 学
性质2 深度为 k 的二叉树至多有 2 k-1个结点(k ≥1)。
一般树和森林与二叉树的转换关系,最后介绍树的应用实
例。
安
徽 理
6.1 树的定义和基本术语
工
大 学
❖ 什么是树?树是由 n (n ≥ 0) 个结点的有限集合。如果 n
= 0,称为空树;如果 n > 0,则
▪ 有且仅有一个特定的称之为根(Root)的结点,它只有直
接后继,但没有直接前驱;
▪ 当n > 1,除根以外的其它结点划分为 m (m >0) 个互不
相交的有限集 T1, T2 ,…, Tm,其中每个集合本身又是一棵 树,并且称为根的子树(SubTree)。
安
徽 理
树的示例
A
工
B
C
D
大
学
E
徽 理
第6章 树和二叉树
工
大 本章学习导读
学
树型结构是一类重要的非线性结构。它的特点是结点之
间有分支,并具有明显的层次关系的结构。树在计算机领
域中有着广泛的应用,例如在编译程序中,用树来表示源
程序的语法结构;在数据库系统中,可用树来组织信息;
在分析算法的行为时,可用树来描述其执行过程。
本章重点讨论二叉树的存储表示及其各种运算,并研究
假设对所有j, 1≤j﹤i,命题成立,即第j层上至多有2 j-1 个
结点。
由归纳假设第i-1 层上至多有 2i -2个结点。
由于二叉树的每个结点的度至多为2,故在第i层上的最大结
点数为第i-1层上的最大结点数的2倍,即2×2i -2= 2 i-1。
安
徽 理
6.2.2 二叉树的性质
工
大 学
性质2 深度为 k 的二叉树至多有 2 k-1个结点(k ≥1)。
一般树和森林与二叉树的转换关系,最后介绍树的应用实
例。
安
徽 理
6.1 树的定义和基本术语
工
大 学
❖ 什么是树?树是由 n (n ≥ 0) 个结点的有限集合。如果 n
= 0,称为空树;如果 n > 0,则
▪ 有且仅有一个特定的称之为根(Root)的结点,它只有直
接后继,但没有直接前驱;
▪ 当n > 1,除根以外的其它结点划分为 m (m >0) 个互不
相交的有限集 T1, T2 ,…, Tm,其中每个集合本身又是一棵 树,并且称为根的子树(SubTree)。
安
徽 理
树的示例
A
工
B
C
D
大
学
E
零基础学数据结构树PPT课件
树中的相对位置。结点结构如图9.4所示。
data parent
第13页/共128页
9.1 树
•
在C语言中,通常采用数组存储双亲表示的树结点,这类似于静态链表
的实现。一棵树结构及树的双亲表示法如图9.5所示。
A
B
C
D
E
F
G
H IJ
双亲 数组下标 结点 位置
0 A -1 1B 0 2C 0 3D 0 4E 1 5F 1 6G 3 7H 6 8I 6 9J 6
4E ^ 5F ^ 6G
孩子结点
7H ^ 8I ^
9J ^
1 4
6^
2 5^
3^
7
8
9^
第16页/共128页
9.1 树
•
为此,需要设计两个结点结构,一个是孩子链表的孩子结点,如图9.6所
示。其中,child是数据域,存放结点在表头数组中的下标;next是指针域,
存放指向下一个孩子结点的指针。另一个是表头数组的表头结点,如图9.7所
A
B E K L F
C G M H I N D
J
第8页/共128页
9.1 树
• 树的抽象数据类型
•
1.数据对象集合
•
树的数据对象集合为树的各个结点的集合。一个数据元素只有一个直接前
驱,但可能有m(m≥0)个直接后继。元素之间是一对多的关系。例如,在树
(A(B(E(K,L),F),C(G(M),H,I(N)),D(J)))中,’G’、’H’和’I’是结点’C’的后
9.1 树
•
(9)Inser tChild(&T,p,Child)
• 初始条件:树T已存在,p指向T中的某个结点。
数据结构--树 ppt课件
A BC D
树的度::=
madxeg (nro)ed ee
no tdreee
例如, degree of this tree = 3.
父节点(Parent) ::= 有子树的节点是 其子树根节点的父节点。
E F G HI J
KL
M
子节点(Child) ::= 若A节点是B节点的父节点,则B节点是A节点 的子节点,也叫孩子节点。
A BC D E F G HI J
KL
M
B
E
F
A
C
G
H
D
I
J
§1 预备知识
因此,每个节点的大小取决于 子树数目。噢,这样并不太好! K L M
§1 预备知识
❖ 儿子-兄弟表示法
Element FirstChild NextSibling
A BC D E F G HI JFra bibliotekKLM
A
N
B
C
D
N
E
F G HI J
第四章 树
§1 预备知识
客观世界中许多事物存在层次关系 ◦ 人类社会家谱 ◦ 社会组织结构 ◦ 图书信息管理
图书
哲
学
…
宗
教
文 学
医 药 卫
农 业 科
工 业 技
生学术
综
…
合
哲 学 理
世
欧
界 哲
…
洲 哲
宗 教
论学
学
电 工 技 术
计 算… 机
建 筑 科 学
水 利 工 程
宗 教 分 析 研 究
宗 教… 理 论 与 概 况
} }
T ( N ) = O( N )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
h-1 <= log2n < h 即 h = log2n+1 或log2n+1 证毕。
-
二叉树的性质(续)
• 性质5 ➢ 完全二叉树中的某结点编号为i,则
1) 若有左孩子,则左孩编号为2i 2)若有右孩子,则右孩子结点编号为2i+1 3)若有双亲,则双亲结点编号为[i/2]
1
2
4
5
3
6
7
8
9 10 11
引言
在前面几章里讨论的数据结构都属于线性结构,线 性结构的特点是逻辑结构简单,易于进行查找、插 入和删除等操作,主要用于对客观世界中具有单一 的前驱和后继的数据关系进行描述。而现实中的许 多事物的关系并非如此简单,如人类社会的族谱、 各种社会组织机构以及城市交通、通讯等,这些事 物中的联系都是非线性的,采用非线性结构进行描 绘会更明确和便利。
兄弟结点:同一双亲的孩子结点;
堂兄弟结点:其父结点在同一层上的结点;
祖先结点: 从根到该结点所经分支上的所有结点;
子孙结点:以某结点为根的子树中任一结点都称为该结点的子孙;
结点的度: 结点的孩子数目
-
树的基本运算
找树的根结点 求树的高度 找指定结点的父结点 找指定结点的孩子结点 在树中插入、删除一个结点 遍历树 ......
根和右子树
二叉- 树的5种基本形式
A
B
C
(e)
根和左右子树
6.2.2 二叉树的性质
A
B
C
D
EF G
• 性质1
H IJ
K
➢ 在二叉树的第i层上至多有2i-1个结点
• 性质2
➢ 深度为k的二叉树至多有2k-1个结点
• 性质3
➢任何一个二叉树中度为2的结点数目(n2)比度为0的结点 数目(n0)少1,即n2= n0-1。
-
6.1 树
树是n个结点的有限集合(可以是空集),在任一棵非空树中: (1)有且仅有一个称为根的结点。 (2)其余结点可分为互不相交的子集,而且这些子集本身又 是一棵树,称为根的子树。
B
EF
K
L
A
C
D
G HI J
M
-
A
B
C
D
E F G HI J
从逻辑结构看:
KL
M
1)树中只有树根没有父结点;
2)除根外,其余结点都有且仅一个父结点;
所谓非线性结构,是指在该结构中至少存在一个数 据元素,有两个或两个以上的直接前驱(或直接后 继)元素。树结构和图结构是非常重要的非线性结 构。
-
第六章 树和二叉树
本章内容
6.1 树的定义和基本术语 6.2 二叉树
6.2.1 二叉树的定义及基本运算 6.2.2 二叉树的性质 6.2.3 二叉树的存储结构 6.3 遍历二叉树和线索二叉树 6.3.1 遍历二叉树 6.3.2 线索二叉树 6.4 树和森林 6.4.1 树的存储结构 6.4.2 森林与二叉树的转换及遍历 6.6 赫夫曼树及应用 6.6.1 赫夫曼树(最优二叉树) 6.6.2 赫夫曼编码
B EF KL
A
C
D
G HI J
M
-
树的表示
A
EB
KL F
D
HI
MJ
C
G
B
EF
K
L
A
C
D
G HI J
M
(A(B(E(k,L),F),C(G),D(H(M),I(),J())))
(a)
(b)
-
6.2 二叉树
二叉树的定义:二叉树要么为空,要么由根结 点、左子树和右子树组成。左、右子树本身也 是二叉树。
3)树中的结点,可以有零个或多个孩子结点;
4) 没有孩子的结点称为叶子结点,或终端结点;
5)除根外的其他结点,都存在唯一一条从根到该结点的路径;
-
树的基本术语
A
B
C
D
E F G HI J
KL
M
树的结点:包含一个数据元素及若干指向子树的分支;
孩子结点:结点的子树的根称为该结点的孩子;
父结点:B 是A的孩子,则A是B的父亲;
-
6.2.2 二叉树的性质
性质3 任何一个二叉树中度为2的结点数目(n2)比 度为0的结点数目(n0)少1,即n2= n0-1。
证明:设二叉树上叶结点数为n0,单分支结点数 为n1,双分支结点数为n2,则总结点数=n0+n1+n2。
在一棵二叉树中,所有结点的分支数(即度数)应 等于单分支结点数加上双分支结点数的2倍,即总的分 支数=n1+2n2。
-
二叉树的顺序存储
非完全二叉树的顺序存储
A BC
ABC
DE
FG
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DE
FG
非完全二叉树不适合进行叉链表存储二叉树(每个结点有两个指针域)
A BC
DE
Lchild
data Rchild A
(d)
高度为3的完全二叉树
-
满二叉树和完全二叉树
1
2
4
56
3 7
1
2
3
4
5
高度为3的满二叉树
高度为3的一个完全二叉树
-
二叉树的性质(续)
• 性质4
➢ 一个有n个结点的完全二叉树的高度H=[log(n)]+1。
证明: 设具有n个结点的完全二叉树的深度为h ,则根据性质3:
深度为h的二叉树至多有2h-1个结点,因此,n <= 2h-1 另外,深度为h的完全二叉树的结点数一定大于2h-1-1, 即n >=2h-1 综上, 2h-1 <= n < 2h,或
完全二叉树
-
6.2.3 二叉树的顺序存储
二叉树的顺序存储指的是用元素在数组中的下标表 示一个结点与其孩子和父结点的关系.
完全二叉树的顺序存储
A
B
C
ABCDE F
1 2 3 4 5 6 7 8 9 10 11 12
DEF
#define MAX_TREE_SIZE 100 typedef TelemType SqBiTree[MAX_TREE_SIZE]; SqBiTree bt;
由于二叉树中除根结点以外,每个结点都有惟一 的一个分支指向它,因此二叉树中:总的分支数=总 结点数-1。
由上述三个等式可得:n1+2n2=n0+n1+n2-1 即:n0=n2+1
-
满二叉树和完全二叉树
高度为3的满二叉树
-
高度为3的一个完全二叉树 高度为3的一个完全二叉树
完全二叉树
(a)
(b)
(c)
A
B
C
DE
F
G
注意:二叉树的子树有严格的左右之分,而树 没有。
-
二叉树的子树要区分左子树和右子树,即使只 有一棵子树也要进行区分。这是二叉树与树的 最主要的差别。下面列出了二叉树的5种基本形 态, (c)和(d)是不同的两棵二叉树。
(a)
空二叉树
A
A
A
B
B
(b)
只有根的 二叉树
(c)
根和左子树
(d)
∧B∧
root C
FG
∧D∧
E
typedef struct BiTNode{ TElemType data; struct BiTNode *Lchild,*Rchild;
-
二叉树的性质(续)
• 性质5 ➢ 完全二叉树中的某结点编号为i,则
1) 若有左孩子,则左孩编号为2i 2)若有右孩子,则右孩子结点编号为2i+1 3)若有双亲,则双亲结点编号为[i/2]
1
2
4
5
3
6
7
8
9 10 11
引言
在前面几章里讨论的数据结构都属于线性结构,线 性结构的特点是逻辑结构简单,易于进行查找、插 入和删除等操作,主要用于对客观世界中具有单一 的前驱和后继的数据关系进行描述。而现实中的许 多事物的关系并非如此简单,如人类社会的族谱、 各种社会组织机构以及城市交通、通讯等,这些事 物中的联系都是非线性的,采用非线性结构进行描 绘会更明确和便利。
兄弟结点:同一双亲的孩子结点;
堂兄弟结点:其父结点在同一层上的结点;
祖先结点: 从根到该结点所经分支上的所有结点;
子孙结点:以某结点为根的子树中任一结点都称为该结点的子孙;
结点的度: 结点的孩子数目
-
树的基本运算
找树的根结点 求树的高度 找指定结点的父结点 找指定结点的孩子结点 在树中插入、删除一个结点 遍历树 ......
根和右子树
二叉- 树的5种基本形式
A
B
C
(e)
根和左右子树
6.2.2 二叉树的性质
A
B
C
D
EF G
• 性质1
H IJ
K
➢ 在二叉树的第i层上至多有2i-1个结点
• 性质2
➢ 深度为k的二叉树至多有2k-1个结点
• 性质3
➢任何一个二叉树中度为2的结点数目(n2)比度为0的结点 数目(n0)少1,即n2= n0-1。
-
6.1 树
树是n个结点的有限集合(可以是空集),在任一棵非空树中: (1)有且仅有一个称为根的结点。 (2)其余结点可分为互不相交的子集,而且这些子集本身又 是一棵树,称为根的子树。
B
EF
K
L
A
C
D
G HI J
M
-
A
B
C
D
E F G HI J
从逻辑结构看:
KL
M
1)树中只有树根没有父结点;
2)除根外,其余结点都有且仅一个父结点;
所谓非线性结构,是指在该结构中至少存在一个数 据元素,有两个或两个以上的直接前驱(或直接后 继)元素。树结构和图结构是非常重要的非线性结 构。
-
第六章 树和二叉树
本章内容
6.1 树的定义和基本术语 6.2 二叉树
6.2.1 二叉树的定义及基本运算 6.2.2 二叉树的性质 6.2.3 二叉树的存储结构 6.3 遍历二叉树和线索二叉树 6.3.1 遍历二叉树 6.3.2 线索二叉树 6.4 树和森林 6.4.1 树的存储结构 6.4.2 森林与二叉树的转换及遍历 6.6 赫夫曼树及应用 6.6.1 赫夫曼树(最优二叉树) 6.6.2 赫夫曼编码
B EF KL
A
C
D
G HI J
M
-
树的表示
A
EB
KL F
D
HI
MJ
C
G
B
EF
K
L
A
C
D
G HI J
M
(A(B(E(k,L),F),C(G),D(H(M),I(),J())))
(a)
(b)
-
6.2 二叉树
二叉树的定义:二叉树要么为空,要么由根结 点、左子树和右子树组成。左、右子树本身也 是二叉树。
3)树中的结点,可以有零个或多个孩子结点;
4) 没有孩子的结点称为叶子结点,或终端结点;
5)除根外的其他结点,都存在唯一一条从根到该结点的路径;
-
树的基本术语
A
B
C
D
E F G HI J
KL
M
树的结点:包含一个数据元素及若干指向子树的分支;
孩子结点:结点的子树的根称为该结点的孩子;
父结点:B 是A的孩子,则A是B的父亲;
-
6.2.2 二叉树的性质
性质3 任何一个二叉树中度为2的结点数目(n2)比 度为0的结点数目(n0)少1,即n2= n0-1。
证明:设二叉树上叶结点数为n0,单分支结点数 为n1,双分支结点数为n2,则总结点数=n0+n1+n2。
在一棵二叉树中,所有结点的分支数(即度数)应 等于单分支结点数加上双分支结点数的2倍,即总的分 支数=n1+2n2。
-
二叉树的顺序存储
非完全二叉树的顺序存储
A BC
ABC
DE
FG
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DE
FG
非完全二叉树不适合进行叉链表存储二叉树(每个结点有两个指针域)
A BC
DE
Lchild
data Rchild A
(d)
高度为3的完全二叉树
-
满二叉树和完全二叉树
1
2
4
56
3 7
1
2
3
4
5
高度为3的满二叉树
高度为3的一个完全二叉树
-
二叉树的性质(续)
• 性质4
➢ 一个有n个结点的完全二叉树的高度H=[log(n)]+1。
证明: 设具有n个结点的完全二叉树的深度为h ,则根据性质3:
深度为h的二叉树至多有2h-1个结点,因此,n <= 2h-1 另外,深度为h的完全二叉树的结点数一定大于2h-1-1, 即n >=2h-1 综上, 2h-1 <= n < 2h,或
完全二叉树
-
6.2.3 二叉树的顺序存储
二叉树的顺序存储指的是用元素在数组中的下标表 示一个结点与其孩子和父结点的关系.
完全二叉树的顺序存储
A
B
C
ABCDE F
1 2 3 4 5 6 7 8 9 10 11 12
DEF
#define MAX_TREE_SIZE 100 typedef TelemType SqBiTree[MAX_TREE_SIZE]; SqBiTree bt;
由于二叉树中除根结点以外,每个结点都有惟一 的一个分支指向它,因此二叉树中:总的分支数=总 结点数-1。
由上述三个等式可得:n1+2n2=n0+n1+n2-1 即:n0=n2+1
-
满二叉树和完全二叉树
高度为3的满二叉树
-
高度为3的一个完全二叉树 高度为3的一个完全二叉树
完全二叉树
(a)
(b)
(c)
A
B
C
DE
F
G
注意:二叉树的子树有严格的左右之分,而树 没有。
-
二叉树的子树要区分左子树和右子树,即使只 有一棵子树也要进行区分。这是二叉树与树的 最主要的差别。下面列出了二叉树的5种基本形 态, (c)和(d)是不同的两棵二叉树。
(a)
空二叉树
A
A
A
B
B
(b)
只有根的 二叉树
(c)
根和左子树
(d)
∧B∧
root C
FG
∧D∧
E
typedef struct BiTNode{ TElemType data; struct BiTNode *Lchild,*Rchild;