学会利用递归思想来建立排序树 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> #include<queue> using namespace std; struct TreeNode { int data; TreeNode* leftchild; TreeNode* rightchild; }; TreeNode* BuildTree(TreeNode* & root, int n) { //建立排序树 if (root == NULL) { root = new TreeNode; root->data = n; root->leftchild = NULL; root->rightchild = NULL; } else if (n < root->data) { root->leftchild = BuildTree(root->leftchild, n); } else if (n > root->data) { root->rightchild = BuildTree(root->rightchild, n); } return root; } void Preorder(TreeNode* t) { if (t == NULL) return; else { cout << t->data << ' '; Preorder(t->leftchild); Preorder(t->rightchild); } } void Inorder(TreeNode* t) { if (t == NULL) return; else { Inorder(t->leftchild); cout << t->data << ' '; Inorder(t->rightchild); } } void Postorder(TreeNode* t) { if (t == NULL) return; else { Postorder(t->leftchild); Postorder(t->rightchild); cout << t->data << ' '; } } int main() { int n; int num[100]; while (cin >> n) { TreeNode* root = NULL; for (int i = 0; i < n; i++) { cin >> num[i]; BuildTree(root, num[i]); } Preorder(root); cout << endl; Inorder(root); cout << endl; Postorder(root); cout << endl; } }