#include<iostream>
using namespace std;
struct tree_node
{
int data;
tree_node *lchild;
tree_node *rchild;
};
void create_btree(tree_node** b_tree)
{
int c = 0;
cin>>c;
if(c != 0)
{
*b_tree = new tree_node;
(*b_tree)->data = c;
create_btree(&(*b_tree)->lchild);
create_btree(&(*b_tree)->rchild);
}
else
{
*b_tree = NULL;
}
}
void preorder(tree_node *head)
{
if(head != NULL)
{
cout<<head->data<<endl;
preorder(head->lchild);
preorder(head->rchild);
}
}
void inorder(tree_node *head)
{
if(head != NULL)
{
inorder(head->lchild);
cout<<head->data<<endl;
inorder(head->rchild);
}
}
void postorder(tree_node *head)
{
if(head != NULL)
{
postorder(head->lchild);
cout<<head->data<<endl;
postorder(head->rchild);
}
}
int main()
{
tree_node *head = NULL;
create_btree(&head);
cout<<"前序遍历"<<endl;
preorder(head);
cout<<"中序遍历"<<endl;
inorder(head);
cout<<"后序遍历"<<endl;
postorder(head);
return 0;
}