由题知 先序输入 中序输出
可以自己画一个二叉树来看一下比较直观
#include <stdio.h>
#include <stdlib.h>
typedef struct TNode
{
char data;
struct TNode *Lchild;
struct TNode *Rchild;
}TNode;
//先序输入建立二叉树
void CreatTree(TNode *temp)
{
temp->Lchild=NULL;
temp->Rchild=NULL;
char c1=getchar();
temp->data=c1;
if(c1=='#')
{
return ;
}
else
{
temp->Lchild=(TNode*)malloc(sizeof(TNode));
CreatTree(temp->Lchild);
temp->Rchild=(TNode*)malloc(sizeof(TNode));
CreatTree(temp->Rchild);
}
}
//中序输出
void PrintTree(TNode *q)
{
if(q->Lchild->data!='#')
PrintTree(q->Lchild);
printf("%c",q->data);
if(q->Rchild->data!='#')
PrintTree(q->Rchild);
}
int main()
{
TNode *s;
s=(TNode*)malloc(sizeof(TNode));
CreatTree(s);
PrintTree(s);
return 0;
}