[工学]第7章 树.ppt

  1. 1、本文档共125页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第7章 树

第7章 树 7.1 树的基本概念 7.2 树的存储结构 7.3 二叉树 7.4 遍历二叉树 7.5 树和森林 7.6 哈夫曼树及其应用 7.7 二叉树的应用举例 7.8 小结 习题7 7.1 树的基本概念 树是n(n≥1)个结点的有限集合。它满足如下条件: (1) 有一个特殊的结点称为根结点(Root); (2) 除根结点之外的其余结点可分为m(m≥0)个互不相交的有限集合:T1,T2,T3,…,Tm,其中每一个集合本身又是一棵树,并且称为根的子树(Subtree)。 这是一个递归定义,因为在树的定义中用到了树本身。树的递归定义给出了树中的每一个结点都是该树中某一棵子树的根。 下面我们将引入与树有关的常用术语。如图7-1所示是具有12个结点的树,其中结点A是根,其余结点分成互不相交的结点子集: T1 ={B,E,F,J,K} T2 ={C} T3 ={D,G,H,I,L} T1,T2,T3都是根A的子树,且它们本身也是一棵树。例如T1,根结点是B,其余结点又可分为两个互不相交的子集: T11={E} T12={F,J,K} 而T11是只有一个根结点的树,没有子树;T12中F是根,{J}和{K}是两棵互不相交的子树,其本身又是只有一个根结点的树。值得注意的是,每棵子树是绝对不能相交的,否则就不能构造一棵递归定义的树。 从树的示例中还可以看到,自然界中的树,树根在下,而数据结构中的树根在上。 下面介绍树的一些相关术语。 结点的度(Degree):一个结点分出的子树个数称为该结点的度。如图7-1所示,A结点的度数是3,B结点的度数是2,C结点的度数是0。 叶结点:度数为零的结点称为叶结点。图7-1中的结点E、J、K、C、L、H、I的度数都为零,都是树的叶结点。还有一种情况,若树仅有一个结点,那么该结点既是根结点又是叶结点。通常叶结点也称作终结结点。 非终结结点:度数不为零的结点称为非终结结点,又叫做分支结点。如图7-1中的A、B、F、D、G等都是分支结点,根结点A也可称为非终结结点。 树的度:树中结点的度数最大值称为树的度。如图7-1中结点A和D的度数为3,是树中结点度数的最大值。因此该树的度数也为3。 树中结点之间的关系:通常用家族关系来形象地描述结点之间的关系。根结点的子树称为该结点的孩子(Child),相应地,该结点称为孩子的双亲(Parents)。例如,图7-1中结点A是孩子B、C、D的双亲,也称结点A是子结点B、C、D的父结点。 同样在子树T1={B,E,F,J,K}中结点B是结点E、F的父结点,E、F是结点B的子结点。同一父亲的孩子之间互称兄弟(Sibling)。例如在图7-1中,B、C、D都是A的孩子,因此它们就是兄弟;G、H、I都是D的孩子,它们也是兄弟;但是E和G不是兄弟,因E的父结点是B,G的父结点是D。将这种关系进一步推广,可以认为D是L的祖先。一个结点的祖先是指从根到该结点的路径上的所有结点。例如,B的子孙是E、F、J、K,L的祖先是G、D、A。 结点的层次(Level):一棵树从根结点开始定义,根为第一层,根的孩子为第二层。若某结点在第i层,则其子树的根就在第i+1层。其双亲在同一层的结点互为堂兄弟。例如,在图7-1中树根结点A是第一层,B、C、D是第二层,E、F、G、H、I是第三层,J、K、L是第四层,其中E、F和G、H、I互为堂兄弟。 树的深度(Depth):树中结点的最大层次称为树的深度或称为高度。如图7-1中树的深度为4。 森林(Forest):m≥0棵互不相交的树的集合。图7-2给出了由三棵树T1、T2、T3组成的森林。我们也可以把树的根结点删除掉,形成由根的子树组成的森林。 在树的范畴中还有二叉树、满二叉树、完全二叉树、二叉排序树、哈夫曼树等概念,我们将在本章中逐一讨论。 7.2 树的存储结构 树结构在计算机中的存储形式,将直接关系到树结构如何能被程序清晰、迅速、准确地处理。 树的基本结构是结点。图7-3给出了结点的结构示意图,其中,i是结点的序号,也可表示为该结点在存储状态的地址或指针。DATA是该结点的数据域。CHILDi是结点i的指针域,它们分别指向各子树的树根。 根据结点指针域的个数是否固定,可将结点的长度划分为定长结点和不定长结点两种。也可以用链表的形式加以区分,采用多重链表来表示树形结构,就能比较清晰地表示出家族关系(如父、子关系)和结点间的层次关系。 1.多重链表表示法 多重链表由结点和链结点的指针组成,每个结点由一个数据域和若干个指针域组成,结点的结构如图7-3所示。每一个指针指向该结点的儿子。由于每个结点

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档