网站大量收购闲置独家精品文档,联系QQ:2885784924

第六章树和二叉树剖析.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 树和二叉树 前面所学是线性结构,其本质在于:中,除开首尾元素外,每一个元素之前驱与后继均是唯一的。 非线性结构的本质在于:扩展了后继与前驱的这一唯一性约束。 线性结构的树扩展:取消线性结构的后继唯一性,则变成所谓树结构。 线性结构的图扩展:同时取消前驱和后继的唯一性约束,则变成图结构。(第七章) 日常生活中的树结构实例: 树结构示意图 家谱;各种社会组织机构的结构;源程序的语法结构树;棋盘状态树;… 6-1树的定义及基本术语 树(Tree):由个结点的有限集合构成()。 时称为空树(Null tree); 时,只存储一个根结点(Root); 时,由根及其个子树(Subtree)构成。 嵌套集合表示法 A (B (E (K, L)), C (G), D (H (M), I, J)) 广义表表示法 如图所示。 注:树定义的递归特性! 树的表示方法 ① 树的层次结构表示法:以根、子树的形式表示。 ② 树的嵌套集合表示法:任何两集合或不相交或一个包含另外一个。 ③ 广义表表示法:把根作为表的名字写在表的左边,然后一层层嵌套进去。 ④ 凹入表示法:长的表示父辈以上的结点,短的表示子辈以下的结点。 有关树结构描述的基本术语 树结点(Tree Node); 分枝结点(Node)/非终端结点/内部结点(度不为零的结点); 结点的度(Degree):结点的子树个数 叶子结点(Leaf)/中终端结点(Terminal Node)(度为零的结点) A B E K L F C G D H I J M 凹入表示法 树的度:树中结点之最大度值 孩子(Child)结点:结点的子树的根 双亲结点(Parent)结点:结点的父亲结点 兄弟(Sibling):同属一父亲结点的孩子结点 祖先结点:当前结点到根结点路径上的所有结点 子孙结点:从当前结点到其下的所有结点 结点的层次:根算1,其下逐层加1的层次信息值 堂兄弟:双亲在同层的结点 树的深度(Depth):树中结点深度的最大值 有序树:将结点的子树之间看成是有序的关系时,如自右向左,或自左向右等 无序树:结点的子树根结点之间没有次序关系的树 有序树的第一个孩子和最后一个孩子: 森林(Forest):颗互不相交的树的集合()。例如树的子树集合。 注:树和森林可以相互递归定义。 如:F表示森林,则Tree=(root,F),其中,root是数据元素(根),F是m棵互不相交的子树(m=0)构成的森林。表示为,为root的第棵子树。时,。 有关树的ADT定义 ADT Tree { 数据对象:是具有相同特性的数据元素之集合。 数据关系: ,则称为空树()。 ,则。 ,,则是如下二元关系: ① ,则是唯一的没有前驱的数据元素; ②,则存在一个划分,,有(即各划分之间互不相交)。,都唯一地,使得(即是的子结点); ③ 对的划分,关系也存在一个唯一的划分,,,其中,是一棵以为根的树。 注:即与之对应;同时,时,。 基本操作: InitTree(T); DestroyTree(T);//销毁树结构,并回收存储空间 CreateTree(T,definition); //definition表示构造树结构的条件(定义) ClearTree(T);//将树清为空树 TreeEmpty(T); //空时返回1,否则返回0 TreeDepth(T); //根为1 Root(T); Value(T,cur_e);//返回树中结点cur_e的值 Assign(T,cur_e,value);//将value值赋给结点cur_e Parent(T,cur_e); //返回cur_e的父结点 LeftChild(T,cur_e);//返回cur_e的最左孩子结点 RightSibling(T,cur_e); //返回cur_e的右边兄弟结点 InsertChild(T,p,i,c); //将c结点插入树T结点之第i棵树处 DeleteChild(T,p,i); //删除树T中结点p的第i棵子树 TraverseTree(T,visit()); //遍历树中结点,并

文档评论(0)

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

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

1亿VIP精品文档

相关文档