首页 计算二叉树结点个数

计算二叉树结点个数

举报
开通vip

计算二叉树结点个数#include#include#definemaxlen50#defineNULL0typedefstructnode{chardata;//data域用来存放结点信息structnode*lchild,*rchild;//lchild用来存放其左孩子的地址,rchild用来存放其右孩子的地址}Bitree;Bitree*Q[maxlen];//定义指针队列Bitree*creatBitree(){charch;intfront=1,rear=0;//置空队列Bitree*T,*S;T=NULL;//置空二叉树c...

计算二叉树结点个数
#include#include#definemaxlen50#defineNULL0typedefstructnode{chardata;//data域用来存放结点信息structnode*lchild,*rchild;//lchild用来存放其左孩子的地址,rchild用来存放其右孩子的地址}Bitree;Bitree*Q[maxlen];//定义指针队列Bitree*creatBitree(){charch;intfront=1,rear=0;//置空队列Bitree*T,*S;T=NULL;//置空二叉树ch=getchar();while(ch!='#'){//以‘#’作为结束符S=NULL;//当输入元素为空时,无需申请空间if(ch!='@'){//当不是虚结点时S=(Bitree*)malloc(sizeof(Bitree));//为所得元素申请内存S->data=ch;//将元素值放入data域存储S->lchild=S->rchild=NULL;//将其左右孩子置空}rear;Q[rear]=S;//将结点地址入队if(rear==1){ T=S;}//输入的第一个元素为根结点else{if(S!=NULL&&Q[front]!=NULL)if(rear%2==0){Q[front]->lchild=S;//能被2整除的rear位存储的皆为左孩子,将其与父节点连接}else{Q[front]->rchild=S;//不能被2整除的rear位存储的皆右左孩子,将其与父节点连接}if(rear%2==1){front;}}ch=getchar();}returnT;}intcountleaf(Bitree*bt){intcount=0;//count记录叶子结点的个数if(bt==NULL){count=0;//当二叉树为空时,叶子结点数为0}elseif((bt->lchild==NULL)&&(bt->rchild==NULL)){count=1;//当左右子树都为空时,只有一个叶子结点,此时叶子结点的个数为1}else{count=(countleaf(bt->lchild)countleaf(bt->rchild));//当左子树或右子树不为空时,调用函数本身继续计算叶子结点的个数}returncount;}voidmain(){intcount;Bitree*bt;printf("请按层次输入二叉树结点信息:\n\t(连续输入,虚结点用‘@’补充成完全二叉树,以‘#’结束)\n");bt=creatBitree();//调用建立二叉树函数count=countleaf(bt);//调用计算叶子结点数函数printf("\n该二叉树中叶子结点数目为:%d",count);//输出计算结果printf("\n\n");}
本文档为【计算二叉树结点个数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_531654
暂无简介~
格式:doc
大小:15KB
软件:Word
页数:0
分类:
上传时间:2021-09-30
浏览量:0