Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- //бинарное дерево
- class Tree {
- //узел дерева
- struct Node {
- int info;
- Node* left; //указатель на левое поддерево
- Node* right; //правое
- Node(int info) {
- this->info = info;
- left = right = nullptr;
- }
- };
- Node* root; //корень дерева
- protected:
- //добавление
- void add(Node*& root, int info) {
- if (root) {
- if (root->info < info) {
- add(root->right, info);
- }
- else {
- add(root->left, info);
- }
- }
- else {
- root = new Node(info);
- }
- }
- //вывод дерева с учетом уровня
- void print(Node* root, int lvl = 0) {
- if (root) {
- print(root->right, lvl + 1);
- for (int i = 0; i < lvl; i++) {
- cout << " ";
- }
- cout << root->info << endl;
- print(root->left, lvl + 1);
- }
- }
- //11
- bool same(Node* root) {
- if (root) {
- if (root->left) {
- if (root->left->info == root->info) {
- return true;
- }
- }
- return same(root->left) || same(root->right);
- }
- return false;
- }
- //очистка
- void clear(Node*& root) {
- if (root) {
- clear(root->left);
- clear(root->right);
- delete root;
- root = nullptr;
- }
- }
- public:
- //конструктор
- Tree() {
- root = nullptr;
- }
- //добавление элемента в дерево
- void add(int info) {
- add(root, info);
- }
- //вывод элементов дерева
- void print() {
- print(root);
- }
- //проверка на уникальность
- bool same() {
- return same(root); //same(T)
- }
- //деструктор
- ~Tree() {
- clear(root);
- }
- };
- //для теста
- int main() {
- srand(time(NULL));
- system("chcp 1251"); //кодировка страницы
- system("cls");
- //заполняем случайно дерево
- int n = 0;
- cout << "Укажите размер дерева -> ";
- cin >> n;
- if (n <= 0) {
- n = 10;
- }
- Tree tr;
- for (int i = 0; i < n; i++) {
- tr.add(rand() % 100);
- }
- cout << "Сформированное дерево:" << endl;
- tr.print();
- //функция по заданию
- if (tr.same()) {
- cout << "В дереве есть хотя бы два одинаковых элемента!" << endl;
- }
- else {
- cout << "В дереве только уникальные элементы!" << endl;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment