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

来源:互联网 发布:csgo优化fps 编辑:程序博客网 时间:2024/05/18 02:42

Problem Description

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

Input

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

Output

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

Example Input

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

Example Output

dfguli
//最后一遍;#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<string>#include<algorithm>#include<cmath>using namespace std ;char ch[10010] ;int l = 0 ;struct stu{    char data ;    struct stu *lchild ;    struct stu *rchild ;};//建立二叉树;void jianli(struct stu *&p){    char h = ch[l++] ;    if(h==',')        p = NULL ;    else    {        p = (struct stu *)malloc(sizeof(struct stu)) ;        p -> data = h ;        jianli(p->lchild) ;        jianli(p->rchild) ;    }}//层序遍历;void cengxu(struct stu *p){    if(p==NULL)        return ;    int i = 0 ;    int n = 0 ;    struct stu *a[10010] ;    a[n++] = p ;    while(i<n)    {        if(a[i])        {            if(a[i]->lchild==NULL&&a[i]->rchild==NULL)            printf("%c",a[i]->data) ;            if(a[i]->lchild!=NULL)            a[n++] = a[i] -> lchild ;            if(a[i]->rchild!=NULL)            a[n++] = a[i] -> rchild ;        }        i++;    }}//主函数;int main(){    struct stu *p ;       while(~scanf("%s",ch))       {        l = 0 ;        jianli(p);        cengxu(p);        printf("\n") ;      }    return 0 ;}

0 0
原创粉丝点击