//打印从根结点到叶子结点的路径
#include<stdio.h>
#include<malloc.h>
typedef struct tree
{
int data;
struct tree *lchild,*rchild;
}tree,*stree;
typedef struct stack
{
char da[100];
int top;
}stack;
stack s;
void push(stack &s,char da)
{
s.top++;
s.da[s.top]=da;
}
void pop(stack &s)
{
s.top--;
}
void display(stack s)
{
int i;
printf("路径:/n");
for(i=1;i<=s.top;i++)
printf("%c",s.da[i]);
printf("/n");
}
void create(stree &t)
{
char ch;
scanf("%c",&ch);
if(ch==' ') t=NULL;
else
{
t=(stree)malloc(sizeof(tree));
t->data=ch;
create(t->lchild);
create(t->rchild);
}
}
void path(stree t)
{
if(t)
{
push(s,t->data);
if(t->lchild==NULL&&t->rchild==NULL)
{display(s);}
else
{
path(t->lchild);
path(t->rchild);
}
pop(s);//注意这里的位置,不可以放到display()后面
}
}
int main()
{
stree t=NULL;
while(1)
{
s.top=0;
printf("输入序列:/n");
create(t);
//pre(t);
printf("/n");
path(t);
printf("/n");
}
}
/*
输入序列:
abd ef c fh
路径:
abd
路径:
abef
路径:
acfh
*/