例如输入AB##C##
输出前序遍历为ABC
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
# define maxn 100
int n=0,len;
struct node
{
char data;
struct node *lchild;
struct node *rchild;
};
typedef struct node NODE ;char a[maxn];
int main()
{
NODE * creat();
void preorder(NODE *root);
scanf("%s",a);
len=strlen(a);
preorder(creat());
printf("\n");
}
NODE * creat() //递归建立二叉树
{
NODE *t;
t=(NODE *)malloc(sizeof(NODE));
if(n>=len)
{
t=NULL;
}
if(a[n]!='#')
{
t->data=a[n];
n++;
t->lchild=creat();
t->rchild=creat();
}
else
{
n++;
t=NULL;
}
return t;
}
void preorder(NODE *root) //前序遍历
{
if(root==NULL)
{
return ;
}
else
{
printf("%c",root->data);
preorder(root->lchild);
preorder(root->rchild);
}
}