数据结构实验之二叉树七:叶子问题

来源:互联网 发布:婚纱摄影软件 编辑:程序博客网 时间:2024/05/16 11:29

http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=3346&cid=1796

数据结构实验之二叉树七:叶子问题

Time Limit: 1000MS Memory limit: 65536K

题目描述

已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。

输入

 输入数据有多行,每一行是一个长度小于50个字符的字符串。

输出

 按从上到下从左到右的顺序输出二叉树的叶子结点。

示例输入

abd,,eg,,,cf,,,xnl,,i,,u,,

示例输出

dfguli

#include<stdio.h>#include<stdlib.h>#include<iostream>#include<queue>using namespace std;typedef char type;typedef struct tnode{    struct tnode *lc;    struct tnode *rc;    type data;}tnode,*tree;int i;tree creat(tree &T,char s[]){    if(s[i]==',')    {        T=NULL;        i++;    }    else    {        T=(tree)malloc(sizeof(tnode));        T->data=s[i];        i++;        T->lc=creat(T->lc,s);        T->rc=creat(T->rc,s);    }    return T;}void func(tree &T){    queue<tree>S;    if(T)        S.push(T);    while(!S.empty())    {        T=S.front();        S.pop();        if(T->lc)            S.push(T->lc);        if(T->rc)            S.push(T->rc);        if(T->lc==NULL&&T->rc==NULL)            printf("%c",T->data);    }}int main(){    tree T;    char s[60];    while(~scanf("%s",s))    {        i=0;        T=creat(T,s);        func(T);        printf("\n");    }    return 0;}


0 0
原创粉丝点击