数据结构-第六章 树与二叉树.ppt

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

lChild data parent rChild
含三个指针域的结点结构 parent
data
data
lChild
rChild
二叉链表
lChild
rChild
三叉链表
性质: 含有n个结点的二叉链表中有n+1个空链域。 证明:对于叶结点n0有两个空链域,n1有1
个空链域,n2没有空链域。所以 空链域数=2n0+n1 将n0=n2+1代入得(根据性质3) 2n0+n1=n0+n1+n2+1=n+1
例如
A 只有根结点的树
A
BC
D
E F GH I J
KL
M
有13个结点的树
其中:A是根;其余结点分成三个互不相交的子集, T1={B,E,F,K,L}; T2={C,G}; T3={D,H,I,J,M}, T1,T2,T3都是根A的子树,且本身也是一棵树
树的基本术语
A
BC
D
E F GH I J
KL
4 5 67
1
8 9 10 11 12
1
2
3
2
3
45
45
6
非完全二叉树
67
性质4 具有 n 个结点的完全二叉树的深度 为log2(n) +1 证明:
设完全二叉树的深度为 h,则根据性 质2和完全二叉树的定义有
2h-1 - 1 < n 2h - 1或 2h-1 n < 2h
取对数 h-1 log2n < h,又h是整数, 因此有 h = log2(n) +1
证明:若度为1的结点有 n1 个,总结点个 数为 n,总边数为 e,则根据二叉树的定
义,
n = n0 + n1 + n2 e = 2n2 + n1 = n - 1
因此,有 2n2 + n1 = n0 + n1 + n2 - 1
n2 = n0 - 1
n0 = n2 + 1
两种特殊形态的二叉树
定义1 满二叉树 (Full Binary Tree) 一棵深度为k且有2k -1个结点的二叉树称为满
0
1
2
34 56
789
二叉树的存储结构
▪顺序表示
1
2
3
2
4 5 67 4
8 9 10
78
1 3
56 9 190
1 2 3 4 5 6 7 8 910
完全二叉树 的顺序表示
1 2 3 4 0 5 6 7 8 0 0 910
一般二叉树 的顺序表示
▪链表表示
lChild data rChild 含两个指针域的结点结构
第六章 树和二叉树
树的概念和基本术语 二叉树 二叉树遍历 二叉树的计数 树与森林 霍夫曼树
树的概念和基本术语
树的定义
树是由 n (n 0) 个结点的有限集合。如 果 n = 0,称为空树;如果 n > 0,则
▪ 有且仅有一个特定的称之为根(Root)的结 点,它只有直接后继,但没有直接前驱;
▪ 当n > 1,除根以外的其它结点划分为 m (m >0) 个互不相交的有限集 T1, T2 ,…, Tm, 其中每个集合本身又是一棵树,并且称为 根的子树(SubTree)。
性质2 深度为 k 的二叉树至多有 2k -1 个结点(k 1)。
证明:由性质1可见,深度为k的二叉树的 最大结点数为
k
(第i层上的最大结点数)
i 1

k
2 i 1 =20 + 21 + … + 2k-1 = 2k -1
i1
性质3 对任何一棵二叉树T, 如果其叶
结点数为 n0, 度为2的结点数为 n2,则n0=n2 +1.
3D 1 4
5
4 E 3 -1 -1
5 F 3 -1 -1
二叉链表的定义
typedef char TreeData; //结点数据类型
typedef struct node { //结点定义 TreeData data; struct node * leftChild, * rightchild;
结点 结点的度 叶结点 分支结点
子女 双亲 兄弟
M
祖先 子孙 结点层次
1层
2层
height
3层 = 4
4层
树的深度 树的度 有序树 无序树 森林
结点:一个数据元素及指向其子树的分支。 结点的度:结点拥有的子树个数。 叶结点:度为零的结点。 子女:结点子树的根。 兄弟:同一结点子女。 祖先:根到该结点路径上的所有结点。 子孙:某结点为根的子树上的任意结点。 结点层次:从根开始,根为第一层,根的子女为
特点 每个结点至多只有两棵子树(二叉树中
不存在度大于2的结点)
五种形态
L
R
LR
性质
性质1 在二叉树的第 i 层上至多有 2i -1 个结点。(i 1) [证明用归纳法] 证明:当i=1时,只有根结点,2 i-1=2 0=1。 假设对所有j,i>j1,命题成立,即第j层 上至多有2 j-1 个结点。 由归纳假设第i-1 层上至多有 2i -2个结点。 由于二叉树的每个结点的度至多为2,故在 第i层上的最大结点数为第i-1层上的最大结 点数的2倍,即2* 2i -2= 2 i-1。
二叉树链表表示的示例
root A
root A
root A
B
B
B
C D C D C D
E F E F E F 二叉树 Nhomakorabea二叉链表
三叉链表
三叉链表的静态结构
root A B CD EF
data parent leftChild rightChild
0 A -1 1 -1
1B 0 2
3
2 C 1 -1 -1
第二层,以此类推。 树的深度(高度):树中结点的最大层次数。 有序树:树中结点的子树由左向右有序。 森林:m(m 0)棵互不相交的树。
二叉树 (Binary Tree)
定义 一棵二叉树是结点的一个有限集合,
该集合或者为空,或者是由一个根结点加 上两棵分别称为左子树和右子树的、互不 相交的二叉树组成。
性质5 如将一棵有n个结点的完全二叉树自顶向
下,同一层自左向右连续给结点编号0, 1, 2, …, n-1,则有以下关系:
若i = 0, 则 i 无双亲 若i > 0, 则 i 的双亲为(i -1)/2
若2*i+1 < n, 则 i 的左子女为 2*i+1,若2*i+2 < n, 则 i 的 右子女为2*i+2 若结点编号i为偶数,且i!=0,则左兄弟结点i-1. 若结点编号i为奇数,且i!=n-1,则右兄弟结点为i+1. 结点i 所在层次为log2(i+1) +1
二叉树。
1
2
3
45
67
8 9 10 11 12 13 14 15
满二叉树
定义2 完全二叉树 (Complete Binary Tree)
若设二叉树的高度为h,则共有h层。除第
h 层外,其它各层 (0 h-1) 的结点数都达到
最大个数,第 h 层从右向左连续缺若干结点,
这就是完全二叉树。
1
2
3
完全二叉树
相关文档
最新文档