赞
踩
已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。
abd,,eg,,,cf,,, xnl,,i,,u,,
dfguli
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<malloc.h> char q[100];int i; struct node { char data; struct node *l,*r; }; struct node *creat(struct node *p) { if(q[i++]==',') p=NULL; else { p=(struct node *)malloc(sizeof(struct node)); p->data=q[i-1]; p->l=creat(p->l); p->r=creat(p->r); } return p; } void cengci(struct node *root) { int out=0,in=0; struct node *q[100]; q[in++]=root; while(in>out) { if(q[out]) {if(q[out]->l==NULL&&q[out]->r==NULL) printf("%c",q[out]->data); q[in++]=q[out]->l; q[in++]=q[out]->r; } out++; } } int main() { while(scanf("%s",q)!=EOF) {i=0; struct node *head; head = (struct node *)malloc(sizeof(struct node)); head = creat(head); cengci(head); printf("\n"); } return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。