#include <stdio.h>
#include <stdlib.h>
typedef struct tree
{ char data;
struct tree*lchild,*rchild;
}bintree;
typedef bintree *tree;
//ABD#E##FG###C##
//后序遍历:EBGFBCA
tree createtree(tree t)
{ char c=getchar();
if(c=='#') return NULL;
else
{ t=(tree)malloc(sizeof(bintree));
t->data=c;
t->lchild=createtree(t->lchild);
t->rchild=createtree(t->rchild);
}
return t;
}
tree findFir(tree t)
{ if(t==NULL) return t;
tree p=t;
while(p->lchild||p->rchild)
{
if(p->lchild!=NULL) p=p->lchild;
else if(p->rchild!=NULL) p=p->rchild;
}
return p;
}
int main()
{
/*后序遍历的尾点为根*/
tree t;
t=createtree(t);
printf("后序遍历的尾点为:%c\n",t->data);
t=findFir(t);
printf("后序遍历的首点为:%c",t->data);
return 0;
}
#include <stdlib.h>
typedef struct tree
{ char data;
struct tree*lchild,*rchild;
}bintree;
typedef bintree *tree;
//ABD#E##FG###C##
//后序遍历:EBGFBCA
tree createtree(tree t)
{ char c=getchar();
if(c=='#') return NULL;
else
{ t=(tree)malloc(sizeof(bintree));
t->data=c;
t->lchild=createtree(t->lchild);
t->rchild=createtree(t->rchild);
}
return t;
}
tree findFir(tree t)
{ if(t==NULL) return t;
tree p=t;
while(p->lchild||p->rchild)
{
if(p->lchild!=NULL) p=p->lchild;
else if(p->rchild!=NULL) p=p->rchild;
}
return p;
}
int main()
{
/*后序遍历的尾点为根*/
tree t;
t=createtree(t);
printf("后序遍历的尾点为:%c\n",t->data);
t=findFir(t);
printf("后序遍历的首点为:%c",t->data);
return 0;
}