#include "iostream" #include "cstdio" using namespace std; struct Node{ int val; Node *left, *right; Node(int v = 0){ val = v; left = NULL; right = NULL; } }; inline void preOrder(Node *head){ //一定要加上inline才能过,否则会time limit if (head != NULL){ printf(" %d", head->val); preOrder(head->left); preOrder(head->right); } } inline void inOrder(Node *head){ if (head != NULL){ inOrder(head->left); printf(" %d", head->val); inOrder(head->right); } } inline void postOrder(Node *head){ if (head != NULL){ postOrder(head->left); postOrder(head->right); printf(" %d", head->val); } } inline void buildTree(Node *&head, const int value){ //这里使用指针引用 if (head == NULL){ head = new Node(value); } else { if (head->val < value){ buildTree(head->right ,value); } else buildTree(head->left, value); } } int main(){ int n; bool ok = false; while (scanf("%d", &n) != EOF){ if (ok) printf("\n"); ok = true; Node *root = NULL; for (int i = 0; i < n; i++){ int tmp; scanf("%d", &tmp); buildTree(root, tmp); } printf("Inorder:"); inOrder(root); printf("\n"); printf("Preorder:"); preOrder(root); printf("\n"); printf("Postorder:"); postOrder(root); printf("\n"); } return 0; }
原文地址:http://blog.csdn.net/liujan511536/article/details/42681349