数据结构C语言
112
左孩子-右兄弟表示法
单击此处编辑母版标题样式
( A ( B ( E ( K, L ), F ), C ( G ), D ( H ( M ), I, J ) ) )
• 单击数此据处编辑母版文本样式A
左• 孩第子二级右兄弟
B
C
• 第三级
• 第四级
E
F
G
• 第五级
K
L
D
HI
J
M
113
A
2. 若干术语单击此处编辑母版标题B 样式C D
在• 任单何击一此棵处非编空树辑中母:版文本样式 • 第(二1)级有且仅有一个结点称为根(root); • 第(三2)级当n>1时,其余的结点可分为m(m>0)个互 不身• 相又第交是四一的级有棵限树集,合被T称1作,T2这,个…根,的Tm子。树其(中S,ub每T个re集e)合。本 • 第五级
注1:过去许多书籍中都定义树为n≥1,曾经有“空树不是树” 的说法,但现在树的定义已修改。
V•al单ue击(T此, c处u编r_辑e)母// 版求文当本前样结式点的元素值 P•a第re二nt(级T, cur_e) // 求当前结点的双亲结点 L•ef第tC三h级ild(T, cur_e) // 求当前结点的最左孩子
• 第四级
R•ig第h五tS级ibling(T, cur_e) // 求当前结点的右兄弟
单击此处编辑母版标题样式
单击此处编辑母版文本样式
第二级
第三级
第四级 第五级
第6章 树和二叉树
1
单击此第处6章编辑树母和版二标叉题树样式
特• 单点:击非此线处性编结辑构母,一版个文直本接样前式驱,但可能有多个 • 第二直级接后继(1:n) • 第三级6.1 树的定义和基本术语 • 第四级6.2 二叉树 • 第五级6.3 遍历二叉树和线索二叉树
划分,对任意j ≠ k,有Hj∩Hk= Φ。(Di,{Hi})
基本操作 P: //至少有15个
}ADT Tree 6
基本单操击此作处:编辑母版标题样式
• 单击此处编辑母版文本样式
• 第二级 查 找 类
• 第三级 • 第四级
插入类
• 第五级
删除类
7
查找类单:击此处编辑母版标题样式
Root(T) // 求树的根结点
根 ——即根结点(没有前驱)
E
F G HI J
叶子• —单—击即此终端处结编点辑(没母有后版继文) 本样式
森林 ——指m棵不相交的树的集
• 合第(例二如级删除A后的子树个数)
K
L
M
有无序 序•树树第——三——级结结点点各各子子树 树从可左互至换右位有置序。,不能互换(左为第一) • 第四级
双 孩•亲子 第——五——级即即上下层层的结那 点个的结子点树的(直根接(前直驱接)后继)
兄弟 ——同一双亲下的同层结点(孩子之间互称兄弟)
堂兄弟 ——即双亲位于同一层的结点(但并非同一双亲)
祖先 ——即从根到该结点所经分支的所有结点
Hale Waihona Puke 子孙 ——即该结点下层子树中的任一结点
114
A
2. 若干术语(续)
结点 ——单即击树的此数处据元编素辑及其母分版支标题B 样式C D
结点的度——结点挂接的子树数(有几个 E
若D中仅含一个数据元素,则R为空集;
• 第三级 否则R={H},H是如下二元关系:
• 第四级 ① 在D中存在唯一根元素root,在H下无前驱
• 第五级
②若D-{root} ≠ Φ ,则存在对D-{root}的一个划 分,对任意j ≠ k,有Dj∩Dk= Φ,且<>∈H...
③ 对应于D-{root} 的划分,H-……有唯一一个
注2:树的定义具有递归性,即树的定义中还有树。
4
只有根结点的树
单击此处编辑母版标题样式
A
• 单击此处编辑母版文本样式
• 第二级
有子树的树
• 第三级
A
根
• 第四级
B
C
D
• 第五级
E
F GH I J
KL
M
子树
5
树的抽象单数击据类此型处定义编辑母版(标见教题材样P1式18-119)
ADT Tree{
• 数单据击对此象D处: 编D是辑具母有相版同文特本性的样数式据元素的集合。 • 数第据二关级系R: 若D为空集,则称为空树;//允许n=0
TreeEmpty(T) // 判定树是否为空树
TreeDepth(T) // 求树的深度
TraverseTree( T, Visit() ) // 遍历
8
插入类单:击此处编辑母版标题样式
I•ni单tT击r此ee处(&编T辑) 母//版初文始本化样置式空树
C•r第ea二te级Tree(&T, definition)
• 第三级
• 第D四e级stroyTree(&T) // 销毁树的结构
• 第五级
DeleteChild(&T, &p, i)
// 删除结点p的第i棵子树
110
树的表示单法击有几此种处: 编辑母版标题样式
• 图形表示法
• •单嵌击套此集处合编表辑示母法版文本样式
• •
•第 第广二 三义级级表表示法
这些表示法的示意图 参见教材P120图6.2
• 单击直此接后处继就编是辑几度母。版) 文本样式
F G HI J
• 第二级
K
L
M
结 终•点端第的结层点三次级————从即根度到 为该0的结结点点的,层即数叶(子根结点算第一层) 分•支第结点四级——即度不为0的结点(也称为内部结点)
6.4 树和森林 6.6 赫夫曼树及其应用
2
6.1 树单的击定此义处和基编本辑术母语 版标题样式
• 单击此1. 处树编的定辑义母版文本样式 • 第二级2. 若干术语 • 第三级3. 逻辑结构 • 第四级4. 存储结构 • 第五级5. 树的运算
3
1. 树的定义单击此处编辑母版标题样式
树(Tree)是n个(n≥0)结点组成的有限集合T。
• •第凹四入级表示法
• •第左五孩级子-右兄弟表示法
11
广义表表示单法 击此处编辑母版标题样式
•(
单击此处编辑母版文本样式
A ( B ( E ( K, L ), F ), C ( G ), D ( H
(
M
),
I,
J
)
)
)
•根第作二为级由子树森林组成的表的名字写在表的左边
• 第三级
• 第四级
• 第五级
• 第三级
// 按定义构造树
A• s第sig四n级(T, cur_e, value)
• 第五级
// 给当前结点赋值
InsertChild(&T, &p, i, c)
// 将以c为根的树插入为结点p的第i棵子树
9
删除单类击:此处编辑母版标题样式
• 单击此处编辑母版文本样式
• 第C二le级arTree(&T) // 将树清空