二叉树的 建立递归算法
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<iostream>
using namespace std;
typedef struct BiNode
{
char data;
BiNode *Lchild;
BiNode *Rchild;
}BiNode;
BiNode *Creat(BiNode *bt)
{
char dt;
cin>>dt;
if(dt == '#')
{
bt = NULL;
}
else
{
bt = (BiNode *)malloc(sizeof(BiNode));
if (!bt)
{
exit(0);
}
bt->data = dt;
bt->Lchild = Creat(bt->Lchild);
bt->Rchild = Creat(bt->Rchild);
}
return bt;
}
void PreOrder(BiNode *bt)
{
if (!bt)
{
return ;
}
cout<<bt->data<<" ";
PreOrder(bt->Lchild);
PreOrder(bt->Rchild);
}
void InOrder(BiNode *bt)
{
if (!bt)
{
return ;
}
else
{
InOrder(bt->Lchild);
cout<<bt->data<<" ";
InOrder(bt->Rchild);
}
cout<<endl;
}
void PostOrder(BiNode *bt)
{
if (!bt)
{
return ;
}
else
{
PostOrder(bt->Rchild);
PostOrder(bt->Lchild);
cout<<bt->data<<" ";
}
}
int main()
{
BiNode *bt;
bt = Creat(bt);
PreOrder(bt);
cout<<endl;
InOrder(bt);
PostOrder(bt);
}