题目链接
Problem Description
已知二叉树的一个按先序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点)。请建立二叉树并求二叉树的叶子结点个数。
Input
连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。
Output
输出二叉树的叶子结点个数。
Example Input
abc,de,g,f,
Example Output
3
#include<iostream>
using namespace std;
typedef struct BiTNode{
char ch;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode,*BiTree;
char s[55];
int i;
BiTree Creat(char *s){
BiTree T;
if(s[i]==','){
i++;
return NULL;
}
else{
T = new BiTNode;
T->ch = s[i++];
T->lchild = Creat(s);
T->rchild = Creat(s);
}
return T;
}
int count1;
int NumberLeave(BiTree T){
if(T==NULL)
return 0;
else{
NumberLeave(T->lchild);
if(T->lchild==NULL&&T->rchild==NULL)
count1++;
NumberLeave(T->rchild);
}
return count1;
}
int main(){
while(cin>>s){
BiTree T;
i = 0;//重新赋值
count1 = 0;//重新赋值
T = Creat(s);
cout<<NumberLeave(T)<<endl;
}
return 0;
}