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

二叉树的参数计算教学文稿.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二叉树的参数计算 实验六 二叉树的参数计算 实验学时:2 实验类型:(综合型) 一、实验目的 1. 理解二叉树遍历算法的应用; 2. 掌握计算二叉树结点个数、高度、叶子结点个数算法实现; 3. 掌握交换二叉树左右子树以及复制一棵二叉树算法的实现; 4. 二、实验条件 Visual C++ 6.0 三、实验原理及相关知识 1.二叉树的存储结构描述; 2.求二叉树结点个数、高度、叶子结点个数算法的基本思想; 3.交换二叉树左右子树以及复制一棵二叉树算法的基本思想。 四、实验步骤 1.确定存储结构,写出二叉链表结构类型的具体定义。 2.二叉树参数计算的算法实现 (1)求结点个数、高度、叶子结点个数、交换二叉树左右子树以及复制一棵二叉树的递归算法的基本思想及算法实现; (2)求结点个数、叶子结点个数的非递归算法的基本思想及算法实现; 五、思考题及其它 1. 二叉树遍历算法求解二叉树的其他相关问题。 2. 树的遍历算法的实现。 3. 赫夫曼编码和解码算法实现。 【参考程序】 #includestdio.h #includemalloc.h #include math.h #define MaxSize 20 typedef int ElemType; #define OK 1 int count; typedef struct BiTNode { ElemType data; struct BiTNode *lchild, *rchild; }BiTNode,*BiTree; //建立二叉树(按先序序列生成二叉树,#表示空节点) void CreateBiTree(BiTree *T) { char ch; scanf(%c,ch); getchar();/*回车键(每次输入一个字符后,需敲回车键)*/ if(ch==#) { printf(不产生子树。\n); *T=NULL; } else { if(!(*T=(BiTNode *)malloc(sizeof(BiTNode)))) { printf(分配空间失败); return; }//生成一个新节点 (*T)-data = ch; printf(产生左右子树。\n); CreateBiTree(((*T)-lchild)) ; CreateBiTree(((*T)-rchild)) ; } } int Count_Tree(BiTree t)//计算二叉树的结点个数。 { int lcount,rcount; if(t==NULL) return 0; lcount=Count_Tree(t-lchild); //求左子树的结点个数 rcount=Count_Tree(t-rchild); //求右子树的结点个数 return lcount+rcount+1; } int NCount_Tree(BiTree t)//非递归算法计算二叉树的结点个数。 { } int Height(BiTree t) //计算二叉树的高度 { int h1,h2; if(t==NULL) return 0; else { h1=Height(t-lchild); //求左子树的高度 h2=Height(t-rchild); if(h1h2) return h1+1; //求右子树的高度 return h2+1; } } void Countleaf(BiTree t,int * count) //计算二叉树的叶子结点的个数 { if(t==NULL) *count=0; if(t-lchild==0 t-rchild==0) (*count)++; if(t-lchild!=0) Countleaf(t-lchild,count); if(t-rchild!=0) Countleaf(t-rchild,count); } void NCountleaf(BiTree t,int *count) //非递归算法计算二叉树的叶子结点的个数 { } void Swapbitree(BiTree t) //交换二叉树的左右子树 { BiTree p; if(t==NULL) return; Swapbitree(t-lchild); Swapbitree(t-rchild); p=t-lchild; t-lchild=t-rchild; t-rchild=p; } void Copybitre

文档评论(0)

151****0277 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档