З однією структурою #include <iostream> using namespace std; struct Tree { int a; Tree* left = nullptr; Tree* right = nullptr; }; void ShowTree(Tree* tmp) { if (tmp != nullptr) { ShowTree(tmp->left); cout << tmp->a << endl; ShowTree(tmp->right); } } int main() { Tree t1; t1.a = 25; Tree t2; t2.a = 15; Tree t3; t3.a = 50; Tree t4; t4.a = 3; Tree t5; t5.a = 20; Tree t6; t6.a = 60; t1.left = &t2; t1.right = &t3; t2.left = &t4; t2.right = &t5; t3.right = &t6; ShowTree(&t1); system("pause"); return 0; }
3 15 20 25 50 60
З класом і структурою #include<iostream> using namespace std; class BST { struct node { int data; node* left; node* right; }; node* root; node* makeEmpty(node* t) { if (t == nullptr) return nullptr; { makeEmpty(t->left); makeEmpty(t->right); delete t; } return nullptr; } node* insert(int x, node* t) { if (t == nullptr) { t = new node; t->data = x; t->left = t->right = nullptr; } else if (x < t->data) t->left = insert(x, t->left); else if (x > t->data) t->right = insert(x, t->right); return t; } node* findMin(node* t) { if (t == nullptr) return nullptr; else if (t->left == nullptr) return t; else return findMin(t->left); } node* findMax(node* t) { if (t == nullptr) return nullptr; else if (t->right == nullptr) return t; else return findMax(t->right); } node* remove(int x, node* t) { node* temp; if (t == nullptr) return nullptr; else if (x < t->data) t->left = remove(x, t->left); else if (x > t->data) t->right = remove(x, t->right); else if (t->left && t->right) { temp = findMin(t->right); t->data = temp->data; t->right = remove(t->data, t->right); } else { temp = t; if (t->left == nullptr) t = t->right; else if (t->right == nullptr) t = t->left; delete temp; } return t; } void inorder(node* t) { if (t == nullptr) return; inorder(t->left); cout << t->data << " "; inorder(t->right); } node* find(node* t, int x) { if (t == nullptr) return nullptr; else if (x < t->data) return find(t->left, x); else if (x > t->data) return find(t->right, x); else return t; } public: BST() { root = nullptr; } ~BST() { root = makeEmpty(root); } void insert(int x) { root = insert(x, root); } void remove(int x) { root = remove(x, root); } void display() { inorder(root); cout << endl; } void search(int x) { root = find(root, x); } }; int main() { BST t; t.insert(5); t.insert(2); t.insert(3); t.insert(1); t.insert(7); t.display(); t.remove(5); t.display(); t.remove(5); t.display(); t.remove(7); t.display(); system("pause"); return 0; }
1 2 3 5 7
1 2 3 7
1 2 3 7
1 2 3
1 2 3 7
1 2 3 7
1 2 3