#include <iostream> #include <cstdio> using namespace std; struct node { int val; node *left, *right; node(int v):val(v),left(NULL),right(NULL){} }; void insert(node *&root, int x) { if (root == NULL) { root = new node(x); return; } if (root->val == x) { return; } if (x < root->val) { insert(root->left, x); } else { insert(root->right, x); } } void preOrder(node *root) { if (root == NULL) { return; } printf("%d ", root->val); preOrder(root->left); preOrder(root->right); } void inOrder(node *root) { if (root == NULL) { return; } inOrder(root->left); printf("%d ", root->val); inOrder(root->right); } void postOrder(node *root) { if (root == NULL) { return; } postOrder(root->left); postOrder(root->right); printf("%d ", root->val); } int main() { int n; while (cin >> n) { node *root = NULL; while (n--) { int x; cin >> x; insert(root, x); } preOrder(root); printf("\n"); inOrder(root); printf("\n"); postOrder(root); printf("\n"); } }