- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)