Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct node {
- int value; // поле данных
- struct node* left; // левый потомок
- struct node* right; // правый потомок
- };
- struct node* add(string x, node* tree) {
- if (tree == NULL) { // Если дерева нет, то формируем корень
- tree = new node; // память под узел
- tree->value = x; // поле данных
- tree->left = NULL;
- tree->right = NULL; // ветви инициализируем пустотой
- }
- else if (x < tree->value) // условие добавление левого потомка
- tree->left = add(x, tree->left);
- else // условие добавление правого потомка
- tree->right = add(x, tree->right);
- return(tree);
- }
- void preorder(node* tree, string&s)
- {
- if (tree != NULL) { //Пока не встретится пустой узел
- s=s+" " + to_string(tree->value); //Записываем корень дерева
- preorder(tree->left, s); //Рекурсивная функция для левого поддерева
- preorder(tree->right, s); //Рекурсивная функция для правого поддерева
- }
- }
- void postorder(node* tree, string&s)
- {
- if (tree != NULL) { //Пока не встретится пустой узел
- postorder(tree->left, s); //Рекурсивная функция для левого поддерева
- postorder(tree->right, s); //Рекурсивная функция для правого поддерева
- s = s + " " + to_string(tree->value); //Записываем корень дерева
- }
- }
- int height(node*tree) {// корень тоже считаем
- if (!tree) return 0;
- return 1 + max(height(tree->left), height(tree->right));
- }
- int count(node* tree)
- {
- if (!tree) return 0;
- return 1 + count(tree->left) + count(tree->right);
- }
- bool is_search(node* tree, int min, int max) {
- if (!tree) return true;
- if ((min <= tree->value) && (tree->value <= max))
- return (is_search(tree->left, min, tree->value) && is_search(tree->right, tree->value, max));
- return false;
- }
- в main:
- для 7.1
- node* root;
- root = NULL;
- int x =1;
- while (x != -1)
- {
- cin >> x;
- root = add(x, root);
- }
- string s = "";
- preorder(root,s);
- cout << s;
- для 7.5
- node* root;
- root = NULL;
- int x =0, max,min;
- while (x != -1)
- {
- cin >> x;
- root = add(x, root);
- }
- max=INT_MAX;
- min=INT_MIN;
- cout <<is_search(root, max, min);
Advertisement
Add Comment
Please, Sign In to add comment