第5章树1-算法与数据结构(第三版)-陈媛-清华大学出版社

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

- Y N YN
3 C3 乘客有优待证 Y N N - -
收费:票价的100%
X
收费:票价的90%
X
收费:票价的80% X
X
收费:票价的70%
X
13
树的应用:决策树
14
等级 不及格 及格 中等 良好 优秀
树的应用:判定树 分数段 0~59 60~69 70~79 80~89 90~100
比例 5% 15% 40% 30% 10%
✓ 遍历操作 TRAVERSE(T) ✓ 按某个次序依次访问树中各个结点,并使每个结点只被 访问一次;
✓ 清除操作 CLEAR(T) ✓ 将树T置为空树
12
树的应用
决策:根据一些给定的条件来确定应采取的行动。
R1 R2 R3 R4 R5
1 C1 乘客年龄16—60 Y Y Y N N
2 C2 购买往返票
✓ 叶子 ✓ 度为0的结点,也叫终端结点
✓ 分支结点 ✓ 度不为0的结点,也叫非终端结点
✓ 内部结点 ✓ 除根结点之外,分支结点也称为内部结点
6
树的基本术语
✓ 树的度:一棵树中最大的结点度数 ✓ 孩子:结点子树的根称为该结点的孩子 ✓ 双亲:孩子结点的上层结点叫该结点的双亲 ✓ 兄弟:同一双亲的孩子之间互成为兄弟 ✓ 祖先:结点的祖先是从根到该结点所经分支上的
集T1,T2,……Tm ✓ 其中每一个集合本身又是一棵树,称为根的子树
✓ 特点 ✓非空树中至少有一个根结点 ✓树中各子树是互不相交的集合
2
树的表示法
只有根结点的树
A
有子树的树
根 A
B
C
D
子树
E
F GH I J
KL
M
3
树的表示法
集合包含关系文氏图法 广义表表示法
凹入表表示法
4
树的术语
路径 祖先与子孙 终端结点与非终端结点
8
结点A的度: 结点B的度: 结点M的度:
结点A的孩子: 结点B的孩子:
叶子:
A
B
C
结点I的双亲: 结点L的双亲:
结点B,C,D为? D 结点F,G为?
E
F GH I J
K 树的度:
结点A的层次: 结点M的层次:
L
M
树的深度:
结点A是结点F,G的? 结点E,K,L,F是结点B的?
9
树形结构的逻辑特征
10
树的基本操作
✓ 初始化操作 INITATE(T) ✓ 置T为空树
✓ 求根 ROOT(T)或ROOT(x) ✓ 求树T的根或求结点X所在的树的根结点。若T为空或X不 在任何一棵树上,则函数值为“空”
✓ 求双亲 PARENT(T,x) ✓ 求树T中结点x的双亲结点,若结点x是树T的根结点或结 点X不在树T中,则函数值为“空”
A
✓ 典型的分支层次结构 ✓ 纵向关系
✓ 祖先与子孙是纵向次序
BC
D
E F GH I J
KL
M
✓ 任一结点都可以有零个或多个直接后继结点
✓ 但至多只有一个直接前趋结点
✓ 叶结点无后继
✓ 根结点无前趋
✓ 横向关系
✓ 有序树中,若k1和k2是兄弟,且k1在k2的左边
,则k1的任一子孙都在k2的任一子孙的左边
所有结点 ✓ 子孙:以某结点为根的子树中的任一结点都成为
该结点次:从根结点算起,根为第一层,它的 孩子为第二层……
✓ 堂兄弟:其双亲在同一层的结点互称为堂兄弟 ✓ 深度:树中结点的最大层次数 ✓ 有序树:如果将树中结点的各子树看成从左至右
是有次序的(即不能互换),则称该树为有序树, 否则称为无序树。 ✓ 有序树中最左边的子树的根称为第一个孩子,最 右边的称为最后一个孩子 ✓ 森林:m(m0)棵互不相交的树的集合
✓ 左子树,右子树 ✓ 子树不相交
✓ 特点 ✓ 每个结点至多有二棵子树 ✓ 不存在度大于2的结点 ✓ 子树有左、右之分,次序不能任意颠倒
17
二叉树的五种形态
右子树
(a)
(b()a) (c)(b()a) ((d(b)c)) (c)(e) (为二d)空叉(的树d)
(
叉(树a)(空空d)二叉 二(左叉叉树a、树树)(右(空d子b图)二 )树5左仅.叉均叉仅3(有二、非树 树有a根叉二)空右(根(结树叉空的d子结b图 )点的二树二)树 点左5的五叉叉仅 .的、均二树种3树右有 二(叉基非(子b图根 树叉 本e空)树)5(形结 树仅.的均左3c态点 有二 的)非二 子根叉右的 空五树叉结树子的为二 种树点的树二空叉 基的( 五叉为的树 本 二种树e空二)叉基( 形 (的叉树本左e二c态树)(形)子左c态右)树子
采用图a进行判断,80%以上的数据要进行三次或三次 以上的比较才能得到结果。
如何使大部分数据经过较少次数的比较得到结果?
15
树的应用:二叉排序树
63
55
90
42
58
70
98
10 45 57 59 67
63,55,90,42,58,70,98,10,45,57,59,67
16
二叉树
✓ 定义 ✓ 二叉树是结点的有限集合 ✓ 或者是空树 ✓ 或者由一个根结点和两棵二叉子树构成
11
树的基本操作
✓ 建树 CRT_TREE(x,F) ✓ 生成一颗以x结点为根,以森林F为子树森林的树;
✓ 插入子树操作 INS_CHILD(y,i,x) ✓ 置以结点x为根的树为结点y的第i棵子树,若原树中无结 点y或结点y的子树个数小于i-1,则空操作;
✓ 删除子树操作 DEL_CHILD(x,i) ✓ 删除结点x的第i棵子树,若无结点x或结点x的子树个数 小于i,则空操作;
结点(node) 结点的度(degree) 树的度 叶子结点(leaf) 分支结点 孩子结点(child) 双亲结点(parents) 兄弟结点(sibling) 堂兄弟结点 树的层次 树的深度 有序树与无序树 森林
5
树的表示法
✓ 结点 ✓ 表示树中的元素,包括数据项及若干指向其子 树的分支
✓ 结点的度 ✓ 结点拥有的子树数
✓ 求孩子结点 CHILD(T,x,i) ✓ 求树T中结点x的第i个孩子结点,若结点x是树T的叶子或 无第i个孩子或结点x不在树T中,则函数值为“空
✓ 求右兄弟 RIGHT_SIBLING(T,x) ✓ 求树T中结点x右边的兄弟,若结点x是其双亲的最右边的 孩子结点或结点x不在树T中,则函数值为“空”;
第5章 树
✓ 树的定义 ✓ 二叉树的定义,性质及存储 ✓ 二叉树的遍历 ✓ 二叉树的线索化 ✓ 树的存储和遍历 ✓ 树、森林与二叉树转换 ✓ 哈夫曼树
1
树的定义及特点
✓ 定义 ✓ 树是由n(n≥0)个结点组成的有限集合 ✓ 当n=0时称为空树 ✓ 否则,在任一非空树中
✓ 必有一个称为根的结点; ✓ 当n>1时,其余结点可分为m(m>0)个互不相交的有限
相关文档
最新文档