《设二叉树采用链式存储结构,试设计一个算法计算一棵给定的二叉树中叶子节点的数目.docx》由会员分享,可在线阅读,更多相关《设二叉树采用链式存储结构,试设计一个算法计算一棵给定的二叉树中叶子节点的数目.docx(4页珍藏版)》请在三一办公上搜索。
1、设二叉树采用链式存储结构,试设计一个算法计算一棵给定的二叉树中叶子节点的数目/*设二叉树采用链式存储结构,试设计一个算法计算一棵给定的二叉树中叶子节点的数目*/#include <stdio.h>#include <stdlib.h>#define MAXSIZE 20typedef struct node int data;struct node *lchild,*rchild;Bitree;Bitree *QMAXSIZE;/队列Q用来存放已输入节点的地址Bitree *Creatree/建立二叉树,返回根指针char ch;int front,rear;Bitree *T
2、,*s;T=NULL;front=1;rear=0;printf(请输入数的节点:(表示虚节点#表示结束)n);ch=getchar;while(ch!=#)/如果不是结束符号,则继续执行s=NULL;if(ch!=)/如果输入的不是是虚节点,则建立新节点,否则不建立s=(Bitree *)malloc(sizeof(Bitree);s->data=ch;s->lchild=s->rchild=NULL;rear+;Qrear=s;if(rear=1)T=s;elseif(s!=NULL&Qfront!=NULL)if(rear%2=0)Qfront->lchild=s;els
3、eQfront->rchild=s;if(rear%2=1)/两个孩子处理完毕,front+front+;ch=getchar;return T;int countleaf(Bitree *T)if(T=NULL)/如果节点为空,则返回0return 0;else if(T->lchild=NULL) & (T->rchild=NULL)/否则如果节点左右孩子有一个为空,另一个存在,则返回1return 1;elsereturn(countleaf(T->lchild)+countleaf(T->rchild);/否则返回左右子树叶子节点之和void mainBitree *T;int count;T=Creatree;count=countleaf(T);printf(树的叶子节点个数为:%dn,count);