#include<iostream> #include<cstring> using namespace std; int arr[101]; typedef struct BiTNode { int data; struct BiTNode* L, * R; }BiTNode, * BiTree; void Insert_Bitree(BiTree & root, int k) { if (root == NULL) { root = (BiTNode*)malloc(sizeof(BiTNode)); root->data = k; root->L = NULL; root->R = NULL; } else if (root->data == k) { return; } else if (root->data > k) { Insert_Bitree(root->L, k); } else { Insert_Bitree(root->R, k); } } void Pre_Order(BiTree& T) { if (T != NULL) { cout << T->data << " "; Pre_Order(T->L); Pre_Order(T->R); } return; } void In_Order(BiTree& T) { if (T != NULL) { In_Order(T->L); cout << T->data << " "; In_Order(T->R); } return; } void Post_Order(BiTree& T) { if (T != NULL) { Post_Order(T->L); Post_Order(T->R); cout << T->data << " "; } return; } int main() { int n; while (cin >> n && n) { memset(arr, 0, 101); for (int i = 0; i < n; i++) { cin >> arr[i]; } BiTree T=NULL; for (int i = 0; i < n; i++) { Insert_Bitree(T, arr[i]); } Pre_Order(T); cout << endl; In_Order(T); cout<<endl; Post_Order(T); cout<<endl; } }