用先序序列创建二叉树,递归算法
#include<stdio.h>#include<stdlib.h>
#include<conio.h>
struct node{
char data;
node * lchild;
node * rchild;
};
node * creattree(node * t)
{
char str;
str=getchar();
if(str==' ')
t=NULL;
else{
t=(node *)malloc(sizeof(node));
t->data=str;
t->lchild=creattree(t->lchild);
t->rchild=creattree(t->rchild);
}
return t;
}
void preorder(node * t)
{
if(t){
putchar(t->data);
preorder(t->lchild);
preorder(t->rchild);
}
}
void onorder(node * t)
{
if(t){
onorder(t->lchild);
putchar(t->data);
onorder(t->rchild);
}
}
void afterorder(node * t)
{
if(t){
afterorder(t->lchild);
afterorder(t->rchild);
putchar(t->data);
}
}
int main(){
node * t;
t=creattree(t);
preorder(t);
putchar('\n');
onorder(t);
putchar('\n');
afterorder(t);
putchar('\n');
return 0;
}