最简单的一种方法就是逆向输入,然后采用“根右左 ”的顺序建立二叉树
*********************************/
/**//**********Gamesduan*********/
/**//**********BiTreeInLast*********/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
#define NULL 0
int n=0;
typedef struct bitnode...{ //树结构
char data;
struct bitnode *lchild,*rchild;
}bitnode;
bitnode *CreateBiTreeInPre() //先序递归建树
{
bitnode *m;
char ch;
scanf("%c",&ch);
if(ch==' ') m=NULL;
else
{
if(!(m=(bitnode *)malloc(sizeof(bitnode))))
exit(0);
m->data=ch;
m->lchild=CreateBiTreeInPre();
m->rchild=CreateBiTreeInPre();
}
return m;
}
bitnode *CreateBiTreeInLast1() //第一种方法,用倒序输入的方式进行输入,输入为“c空b空空”
{
bitnode *T;
char ch;
scanf("%c",&ch);
if(ch==' ')
T=NULL;
else
{
T=(bitnode *)malloc(sizeof(bitnode));
T->data=ch;
T->rchild=CreateBiTreeInLast2(); //先创建右子树
T->lchild=CreateBiTreeInLast2(); //再创建左子树
}
return T;
}
void preorder(bitnode *t) //先序递归输出
{
if(t!=NULL)
{
printf("%c ",t->data);
preorder(t->lchild);
preorder(t->rchild);
}
}
void main()
{
bitnode *t=new bitnode;
//t=CreateBiTreeInPre(); //先序
t=CreateBiTreeInLast1(); //后序1
preorder(t);
}