以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数。
输入格式:
输入二叉树的先序序列。
提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。
输出格式:
输出有两行:
第一行是二叉树的中序遍历序列;
第二行是二叉树的叶子结点个数。
输入样例:
ABC##DE#G##F###
输出样例:
CBEGDFA
3
代码如下:
#include <stdio.h>
#include <stdlib.h>
int count=0;
typedef struct Tree{
char data;
struct Tree *lchild, *rchild;
}Tree, *TR;
void creat(TR &T)
{
char ch;
ch=getchar();
if(ch=='#')
T=NULL;
else
{
T=(TR)malloc(sizeof(Tree));
T->data=ch;
creat(T->lchild);
creat(T->rchild);
}
}
void Mi_OUT(TR T)
{
if(T==NULL)
return ;
if((T->lchild==NULL)&&(T->rchild==NULL))
count++;
Mi_OUT(T->lchild);
printf("%c", T->data);
Mi_OUT(T->rchild);
}
int main()
{
TR T=NULL;
creat(T);
Mi_OUT(T);
printf("\n%d", count);
return 0;
}