Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- struct elem { //структура на дървото
- int key; //стойност на елемента
- elem* left; // ляво поддърво
- elem* right; //дясно поддърво
- bool printed = false; //дали елемента е принтиран
- } *root = NULL; // инициализация на корена
- int parent = 0;
- bool namerenRoditel = false;
- void obhozdane(elem *t);
- void add(int n, elem *&t);
- void main()
- {
- int broj;
- cout << "Broj elementi: ";
- cin >> broj;
- while (broj < 1) { //ако потребителя въведе число по-малко от 1 за брой, накарай го да въвежда пак число
- cout << "Nevaliden broj" << endl;
- cout << "Broj elementi: ";
- cin >> broj;
- }
- int number; //елемент на дървото
- cout << "Vavedete elementi: " << endl;
- for (int i = 0; i < broj; i++)
- {
- cin >> number;
- add(number, root);
- }
- cout << "Roditel za tarsene: ";
- cin >> parent;
- obhozdane(root);
- if (!namerenRoditel) cout << "Nqma roditel sas stojnost" << parent << endl;
- }
- //obhozdane prav red - корен, lqvo poddarvo dqsno poddarvo
- void obhozdane(elem *t) //t - цялото дърво или поддърво
- {
- if (t)
- {
- if (t->key == parent && (t->left || t->right)) {
- cout << "Nameren e roditel sas stojnost" << parent << endl;
- cout << "*******************" << endl;
- namerenRoditel = true;
- if (t->left != NULL)
- cout << "Lqvo dete: " << t->left->key << endl;
- else
- cout << "Lqvo dete: " << "Nqma" << endl;
- if (t->right != NULL)
- cout << "Dqsno dete: " << t->right->key << endl;
- else
- cout << "Dqsno dete: " << "Nqma" << endl;
- }
- obhozdane(t->left);
- obhozdane(t->right);
- }
- }
- void add(int n, elem *&t)
- {
- if (t == NULL) //в случай, че дървото няма елементи, или е след листо
- {
- t = new elem;
- t->key = n;
- t->left = t->right = NULL;
- }
- else
- {
- if (t->key < n) //ако е по-голямо от върха, сложи го от дясно
- {
- add(n, t->right);
- }
- else //ако е по-малко от върха, сложи го от дясно
- {
- add(n, t->left);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement