- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3、按前序遍历顺序建立一棵3度树的递归算法void createtree (tree *p ) { int i; char ch; if ((ch=getchar())= =‘ ’) *p=NULL; else { *p=(tree) malloc (sizeof(node)); /*产生树的根结点*/ (*p)-data=ch; for (i=0;im;++i) /*按前序遍历顺序依次产生每棵子树*/ createtree((*p)-child[i]); } } 4、树的层次遍历算法 在树的层次遍历过程中,对于某一层上的每个结点被访问后,应立即将其所有子女结点按从左到右的顺序依次保存起来,该层上所有结点的这些子女结点正好构成下一层的所有结点,接下来应该被访问的就是它们。显然,这里用于保存子女结点的数据结构选择队列最合适,队列中的每个元素均为在排队等待访问的结点。 由于树的层次遍历首先访问的是根结点,因此初始时队列中仅包含根结点。只要队列不为空,就意味着还有结点未被访问,遍历就必须继续进行;每次需访问一个结点时均取队头元素,访问完成后,若其子女非空,则将其所有子女按顺序依次进队;不断重复以上过程,直到队列为空。 void levelorder(tree t) {tree queue[20]; /*存放等待访问的结点队列*/ int f,r,i; /*f、r分别为队头、队尾指针*/ tree p; f=0; r=0; queue[0]=t; while (f=r) /*队列不为空*/ { p=queue[f]; f++; printf(%c,p-data); for (i=0;im;++i) if (p-child[i]) { ++r; queue[r]=p-child[i]; } } } 第6章 树型结构 树的基本概念 树的遍历 树的线性表示 树类的定义 树的存储结构 * * 第6章 树型结构 树的基本概念 树的遍历 树的线性表示 树类的定义 树的存储结构 6.1 树的基本概念 树是由n (n≥0)个结点构成的有限集合,n=0的树称为空树;当n≠0时,树中的结点应该满足以下两个条件:(1)??有且仅有一个特定的结点称之为根;(2) 其余结点分成m(m≥0)个互不相交的有限集合T1, T2,……Tm,其中每一个集合又都是一棵树,称 T1, T2,……Tm为根结点的子树。 B D E F G A H I J K C 图6.1 在树中采用线段连接两个相关联的结点,如A和B,D和H等。其中A和D是上端结点,B和H是下端结点。称A、D分别是B、H的双亲(或父母或前件),B和H分别为A和D的子女(或孩子或后件)。显然,双亲和子女的关系是相对而言的。图6.1中,B是A的子女,但又是E和F的双亲。由于E和F的双亲为同一结点,称E和F互为兄弟。在任何一棵树中,除根结点外,其它任何一个结点有且仅有一个双亲,有0个或多个子女,且它的子女恰巧为其子树的根结点。我们将一结点拥有的子女数称为该结点的度,树中所有结点度的最大值称为树的度。图6.1中,A的度为3,B的度为2,而C的度为0,整棵树的度为3。称度为0的结点为终端结点或叶子结点,称度不为0的结点为非终端结点或分支结点。显然,A、B、D、H均为分支结点,而E、F、C、G、J、K、I均为叶子结点。 称树中连接两个结点的线段为树枝。在树中,若从结点Ki开始沿着树枝自上而下能到达结点Kj,则称从Ki到Kj存在一条路径,路径的长度等于所经过的树枝的条数。在图6.1中,从结点A到结点J存在一条路径,路径的长度为3;从D到K也存在一条路径,路径的长度为2。仔细观察不难发现,从树根到树中任何一个结点均存在一条路径。 将从树根到某一结点Ki的路径中Ki前所经过的所有结点称为Ki的祖先;反之,以某结点Ki为根的子树中的任何一个结点都称为Ki的子孙。图6.1中,A、D、H均为J和K的祖先,而G、H、I、J和K均为D的子孙。 树中结点的层次:从树根开始定义,根结点为第一层,根的子女结点构成第二层,依次类推,若某结点Kj位于第i层,则其子女就位于第i+1层。称树中结点的最大层次数为树的深度或高度。图6.1中,A结点位于第一层,B、C、D位于第2层,E、F、G、H和I位于第三层等等,整棵树的高度为4。 若树中任意结点的子树均看
您可能关注的文档
最近下载
- 2022年上海市春季高考语文真题试卷含详解与写作参考范文.docx VIP
- 2023年上海市春季高考语文试卷真题含答案及评分标准.pdf VIP
- 运动会铅球宣传稿.docx VIP
- 《离心机 安全要求gb 19815-2021》详细解读.pdf
- 2025年1月上海市春季高考语文真题(附答案解析).docx VIP
- 2025湖北银行笔试题库及答案.doc VIP
- 2025年上海市高考语文真题试卷及答案.docx VIP
- 《国有企业管理人员处分条例》课件.pptx VIP
- 58同城如何发布房屋出租信息?房屋出租技巧?.doc VIP
- 人教版高中英语必修第一册《UNIT 3 SPORTS AND FITNESS》大单元整体教学设计.docx
文档评论(0)