Untitled
unknown
plain_text
a year ago
3.2 kB
5
Indexable
#include <iostream> #include <vector> #include <algorithm> #include <set> using namespace std; class BinTree { private: class Point { public: int num; Point *left; Point *right; Point(int num) { this->num = num; this->left = nullptr; this->right = nullptr; } Point(int num, Point *left, Point *right) { this->num = num; this->left = left; this->right = right; } Point() { this->num = 0; this->left = nullptr; this->right = nullptr; } }; Point *Root; Point *buildTree(vector<int> nums, int start, int end) { if (start > end) { return nullptr; } int mid = (start + end) / 2; Point *root = new Point(nums[mid]); root->left = buildTree(nums, start, mid - 1); root->right = buildTree(nums, mid + 1, end); return root; } public: BinTree(vector<int> nums) { this->Root = buildTree(nums, 0, nums.size() - 1); } ~BinTree() { delete Root; } bool in_array(int num) { Point *cur = Root; while (cur != nullptr) { cout << cur->num << endl; if (cur->num == num) { return true; } else if (cur->num > num) { cur = cur->left; } else { cur = cur->right; } } return false; } void insert(int num) { Point *cur = Root; while (cur != nullptr) { if (cur->num == num) { return; } else if (cur->num > num) { if (cur->left == nullptr) { cur->left = new Point(num); return; } cur = cur->left; } else { if (cur->right == nullptr) { cur->right = new Point(num); return; } cur = cur->right; } } } int get_min(int num){ if (this->in_array(num)){ Point *cur = Root; while (cur->left != nullptr) { cur = cur->left; } return cur->num; } return -1; } int get_max(int num){ if (this->in_array(num)){ Point *cur = Root; while (cur->right != nullptr) { cur = cur->right; } return cur->num; } return -1; } }; int main() { const int N = 10000; srand(time(nullptr)); set<int> tmp; for (int i = 0; i < N; i++) { tmp.insert(rand()); } vector<int> nums(tmp.begin(), tmp.end()); sort(nums.begin(), nums.end()); BinTree tree(nums); // for (int num : nums) { // cout << num << ' '; // } // cout << endl; cout << tree.in_array(22222) << endl; tree.insert(22222); cout << tree.in_array(22222) << endl; return 0; }
Editor is loading...
Leave a Comment