数据结构实验之二叉树七:叶子问题
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。
输入
输入数据有多行,每一行是一个长度小于50个字符的字符串。
输出
按从上到下从左到右的顺序输出二叉树的叶子结点。
示例输入
abd,,eg,,,cf,,, xnl,,i,,u,,
示例输出
dfg uli
提示
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node
{
char data;
struct node *l,*r;
};
char s[100];
int cnt;
struct node *creat()
{
cnt++;
struct node *q;
if(s[cnt] == ','){
q =NULL;
}else {
q = (struct node *)malloc(sizeof(struct node));
q->data = s[cnt];
q->l = creat();
q->r = creat();
}
return q;
}
void Nnode(struct node *tree)
{
struct node *q[100];
int head = 0;
int tail = 1;
q[head] = tree;
while(head < tail){
if(q[head]!=NULL){
if(q[head]->l==NULL&&q[head]->r==NULL){
printf("%c", q[head]->data);
}
q[tail++] = q[head]->l;
q[tail++] = q[head]->r;
}
head++;
}
}
int main()
{
struct node *tree;
while(~scanf("%s", s)){
cnt = -1;
tree = creat();
Nnode(tree);
printf("\n");
}
return 0;
}