树的定义是递归的,操作自然也离不开递归,关键还是递归求解
#include<bits/stdc++.h>
using namespace std;
typedef struct node
{
char data;
struct node *lc,*rc;
} node,*link;
int i,flag;
char path[1000];
void creat(link &L)
{
char ch;
scanf("%c",&ch);
i++;
if(i==1&&ch=='0')
{
flag=0;
return ;
}
if(ch=='0')
L=NULL;
else
{
L=new node;
L->data=ch;
creat(L->lc);
creat(L->rc);
}
}
void preorder(link L,char path[],int len)
{
if(L)
{
if(L->lc==NULL&&L->rc==NULL)
{
path[len]=L->data;
for(int i=len;i>=0;i--)
printf("%c",path[i]);
printf("\n");
}
else
{
path[len++]=L->data;
preorder(L->lc,path,len);
preorder(L->rc,path,len);
len--;
}
}
}
int main()
{
while(1)
{
i=0,flag=1;
link L;
creat(L);
if(!flag) break;
int len=0;
preorder(L,path,len);
getchar();
}
return 0;
}