#include <stdio.h>
#include <stdlib.h>
typedef struct node{
char data;
struct node* lchild;//左子树
struct node* rchild;//右子树
}TreeNode;
//二叉树的创建
void create_Tree(TreeNode **tree){
char ch;
ch=getchar();
if(ch=='#')
(*tree)=NULL;
else{
*tree=(TreeNode*)malloc(sizeof(TreeNode));
(*tree)->data=ch;
create_Tree(&(*tree)->lchild);
create_Tree(&(*tree)->rchild);
}
}
//二叉树的先序遍历
void preOrder(TreeNode *tree){
if(tree==NULL)
return;
else{
printf("%c ",tree->data);//输出
preOrder(tree->lchild);//处理左子树
preOrder(tree->rchild);//处理右子树
}
}
//二叉树的中序遍历
void inOrder(TreeNode *tree){
if(tree==NULL)
return;
else{
inOrder(tree->lchild);//处理左子树
printf("%c ",tree->data);//输出
inOrder(tree->rchild);//处理右子树
}
}
//二叉树的后序遍历
void postOrder(TreeNode *tree){
if(tree==NULL)
return;
else{
postOrder(tree->lchild);//处理左子树
postOrder(tree->rchild);//处理右子树
printf("%c ",tree->data);//输出
}
}
int main(int argc, const char *argv[])
{
TreeNode *tree;
create_Tree(&tree);
preOrder(tree);
puts("");
inOrder(tree);
puts("");
postOrder(tree);
puts("");
return 0;
}