#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)
{
tree_node *s[100] = {0};
tree_node *p = head;
int top = -1;
while(top != -1 || p != NULL)
{
while(p != NULL)
{
s[++top] = p;
cout<<p->data<<endl;
p = p->lchild;
}
if(top != -1)
{
p = s[top--];
p = p->rchild;
}
}
}
void inorder(tree_node *head)
{
tree_node *s[100] = {0};
tree_node *p = head;
int top = -1;
while(top != -1 || p != NULL)
{
while(p != NULL)
{
s[++top] = p;
p = p->lchild;
}
if(top != -1)
{
p = s[top--];
cout<<p->data<<endl;
p = p->rchild;
}
}
}
int main()
{
tree_node *head = NULL;
create_btree(&head);
cout<<"前序遍历"<<endl;
preorder(head);
cout<<"中序遍历"<<endl;
inorder(head);
return 0;
}