#include <cstddef> #include <iostream> using namespace std; struct node { int data; node* leftChild; node* rightChild; node(int a) { data = a; leftChild = NULL; rightChild = NULL; } }; node* insert(node* root, int a) { if (root == NULL) { return new node(a); } if (a < root->data) root->leftChild = insert(root->leftChild, a); else if (a > root->data)root->rightChild = insert(root->rightChild, a); return root; } void preOder(node* root) { if (root == NULL) return; cout << root->data << ' '; preOder(root->leftChild); preOder(root->rightChild); } void inOder(node* root) { if (root == NULL) return; inOder(root->leftChild); cout << root->data << ' '; inOder(root->rightChild); } void postOder(node* root) { if (root == NULL) return; postOder(root->leftChild); postOder(root->rightChild); cout << root->data << ' '; } int main() { int n; while (cin >> n) { // 注意 while 处理多个 case node* root = NULL; while (n--) { int a; cin >> a; root = insert(root, a); } preOder(root); cout<<endl; inOder(root); cout<<endl; postOder(root); cout<<endl; } } // 64 位输出请用 printf("%lld")