数据结构考研算法分析和总结 树和二叉树部分eilpf.pdfVIP

数据结构考研算法分析和总结 树和二叉树部分eilpf.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构考研算法分析和总结 树和二叉树部分 icyfire 2006-11-12 前言 数据结构中的算法设计题目在考研通常所占比重较大,而且具有一定的难度,是考研过程中 比较难准备,但是又可以拉开分数,分出层次的兵家必争之地。在我复习的过程之中阅读了 大量的真题,发现很多题目都具有重复性,考来考去不过那几种类型,如果你掌握好了这几 种类型,基本可以把关于树和二叉树的算法题目搞定了。二叉树和树本身就是重点,属于必 考的题目,阅读本文不仅能够帮助你提高算法设计的能力,提高应试分数,而且有利于掌握 课本中的算法思想。 谨以此文献给广大战斗在考研一线的战友们!希望本文能给你们帮助,祝大家考研成功! 类型总结原则: 常考的,难度中等左右,易于推广到其他类型的题目中去,过难过易不具有代表性的都不在 此总结之列。 阅读基础: 很多学校还是喜欢考书上的例子。因此,在阅读本文以进一步提高算法设计能力之前,您必 须熟悉书中的基本概念,对算法设计题目而言,课本(严版)中的中序遍历算法(递归和非 递归),中序线索化,霍夫曼算法您必须要熟练掌握,更为基础的是您要了解二叉树和树的 各种存储结构。 本文所列之算法全都才用严版类C 的语言风格,没有上机调试过,但是应付考试足够了。 算法专题 二叉树、树和森林 第一,判断完全二叉树。 存储结构:二叉链表。 算法思想:如果一个节点没有左孩子,那么就不应该有右孩子。 错误的算法思想:如果左右孩子全都是完全二叉树则,该树为完全二叉树。 算法: int JudgeCompleteBiTree (BiTree bt ) { int tag = 0; //tag=1 表示第一次出现空节点 p =bt ; if (p=null) return 1 ; // 空树 QueueInit(Q); EnQueue(Q,p); while(!QueueEmpty(Q)){ p= DeQueue(Q); if (p-lchild !tag) EnQueue(Q,p-lchild); // 左子女入队 else{ if (p-lchild) return 0; else tag=1 ; // 表示第一次出现空的节点 if(p-rchild !tag) EnQueue(Q,p-rchild); //右子女入队 else if (p-rchild) return 0; else tag =1; } return 1; }} 二 求树的深度 树的深度常考,双亲表示法,二叉链表表示法,孩子兄弟表示法求解树的深度,一般采用递 归的方法比较简单。 扩展:求给定某节点所在的层数也是就是求该节点的深度。 双亲表示法: int Depth (PTree t) { int depth =0; for (i =1; i=t.n ;i++) { temp=0; c=i; while (c0){ temp++; c=t.Nodes[c].parent; if(tempdepth) depth = temp; } } return depth; } 二叉链表表示法求二叉树的高度 int Height (btree bt) { int hl ,hr ; //左右子树的高度 if (bt == null) return 0 ; else hl = Height(bt- lchild); hr = Height (bt- rchild); if (hlhr) return (hl +1); else return (hr +1); } 孩子兄弟表示法求树的高度 基本思路:采用递归的方法,树空则高度为0,如果第一子女为空,则高度就为1 和兄弟子 树高度大的,否则高度就为第一子树高度+1 和兄弟子树高度大的。 递归算法: i

文档评论(0)

xinxinasd + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档