- 1、本文档共103页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 树和二叉树 6.1树的定义和基本术语 6.2二叉树 6.3遍历二叉树和线索二叉树 6.4树和森林 6.6赫夫曼树及其应用 6.1 树的定义和基本术语 树(Tree):是n(n=0)个结点的有限集。 在任意一个非空树中: ⑴有且仅有一个特定的称为根(Root)的结点; ⑵当n=1时,其余结点可分为m(m0)个互不相交的有限集T1,T2,…,Tm,其中Ti是一棵树,称为根结点子树 例:(a)是只有一个根结点的树.(b)是有13个结点的树,A是根,其余结点分成三个互不相交的子集:T1=(B,E,F,K,L);T2=(C,G);T3=(D,H,I,J,M).T1,T2,T都是根A的子树,本身也是一棵树 抽象类型树的定义 ADT Tree { 数据对象D:D是具有相同特性的数据元素的集合. 数据关系R: 若D为空集,则称为空树; 若D仅含一个数据元素,则R为空集,否则R={H}, H是如下二元关系: (1)在D中存在唯一的称为根的数据元素root,它在 关系H下无前驱; 树的基本操作 基本操作P: InitTree(T); 操作结果:构造空树T DestroyTree(T); 初始条件:树T存在 操作结果:销毁树T CreatTree(T,definition); 初始条件:definition给出树T的定义 操作结果:按definition树构造树T ClearTree(T) 初始条件:数T存在 操作结果:将树T清为空树 TreeEmpty(T); 初始条件:树T存在 操作结果:若T为空树,则返回TRUE,否则FALSE TreeDepth(T); 初始条件:树T存在 操作结果:返回T的深度 Root(T); 初始条件:树T 存在 操作结果:返回T的根 Value(T,cur_e); 初始条件:树T存在,cur_e是T中某个结点 操作结果:返回cur_e的值 Assign(T,cur_e,value); 初始条件:树T存在,cur_e是T中某个结点 操作结果:结点cur_e赋值 为value Parent(T,cur_e); 初始条件:树T存在,cur_e是T中某个结点 操作结果:若cur_e是T的非根结点,则返回它的双亲,否则函数值为“空” LeftChild(T,cur_e); 初始条件:树T存在,cur_e是T中某个结点 操作结果:若cur_e是T的非叶子结点,则返回它的最左孩子,否则返回“空” RightSibling(T,cur_e); 初始条件:树T存在,cur_e是T中某个结点 操作结果:若cur_e有右兄弟,则返回它的右兄弟,否则 函数值为 “空” InsertChild(T,P,i,c); 初始条件:树T存在,P指向T中某个结点,1=i=P所指结点的度+1,非空树c 与T不相交 操作结果:插入c为T中p指结点第i棵子树 DeleteChild(T,P,i); 初始条件:树T存在,p指向T中某个结点,1=i=P指结点的度 操作结果:删除T中P所指结点的第i棵子树 TraverseTree(T,Visit()); 初始条件:树T存在,Visit是对结点操作的应用函数 操作结果:按某种次序树对T的每个结点调用函数visit()一次且至多一次,一旦visit()失败,则操作失败 }ADT Tree 树的逻辑表示形式 (a)树型结构 (b)嵌套集合 (c)广义表 (d)凹入表(目录表示法) 树的基本术语 度:结点拥有的子树数称为结点的度 叶子(终端结点):度为0的结点 非终端结点(分支结点):度不为0的结点 树的度是树内各结点的度的最大值 结点的子树的根称为该结点的孩子 该结点称为孩子的双亲(parent) 深度:树中结点的最大层次 有序树:将树中结点的各子树看成从左到右是有次序的(不能互换),称该树为有序树。 无序树:将树中结点的各子树看成从左到右是无次序的(不能互换),称该树为无序树。 森林:是m(m=0)棵互不相交的树的集合 6.2 二叉树 定义:是一棵或为空树,或树中每个结点的度数 =2有序树 特点:⑴每个结点至多有两棵子树 ⑵ 二叉树的子树有左右之分,其次序不能 任意互换 Φ 二叉树的基本操作 InitBiTree(T); 操作结果:构造空二叉树T DestroyBiTree(T); 初始条件:二叉树T存在 操作结果:销毁二叉树T CreatBiTree(T,definition); 初始条件:definition给出二叉树T的定义 操作结果:按defin
文档评论(0)