解題心得
二元搜尋樹的練習,中規中矩。
程式碼
#include <iostream> using namespace std; struct Node { int data; Node* left; Node* right; }; Node* insert(Node* tree, int n) { if (tree == NULL) { tree = new Node; tree->data = n; tree->left = tree->right = NULL; } else { if (n < tree->data) tree->left = insert(tree->left, n); else tree->right = insert(tree->right, n); } return tree; } void printInorder(Node* tree) { if (tree == NULL) return; printInorder(tree->left); cout << tree->data << endl; printInorder(tree->right); } bool search(Node* tree, int val) { if (tree == NULL) return false; if (tree->data == val) return true; if (val < tree->data) search(tree->left, val); else search(tree->right, val); } int main() { Node* root = NULL; int n, val, m; while (cin >> n) { while (n--) { cin >> val; root = insert(root, val); } printInorder(root); cin >> m; if (search(root, m)) cout << "Yes" << endl; else cout << "No" << endl; } return 0; }
沒有留言:
張貼留言