解題心得
二元搜尋樹的練習,中規中矩。
程式碼
#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;
}
沒有留言:
張貼留言