Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вставить подстроку в строку(без использования библиотечного метода Insert) Не получается реализовать вставку подстроки в строку перед index код: void String::Insert(char* s, int index ) { int count = 0; char* str1; int secondCount = 0; str1=new char; for (int i... https://www.cyberforum.ru/ cpp-beginners/ thread2497578.html C++ Написать программу, которая в вещественном числе выделяет целую и дробную части
Написать программу, которая в вещественном числе, введённом в режиме диалога, выделяет целую и дробную части, и отдельно выводит их на экран монитора.
C++ Метод прогноза и коррекции Здравствуйте, необходимо решить задачу используя метод прогноза и коррекции, решить краевую задачу для обыкновенного дифференциального уравнения с точностью ε = 0.0001 y''-xy'+2y=x+1... https://www.cyberforum.ru/ cpp-beginners/ thread2497564.html C++ Написать программу вычисления выражения: Y=3*(X+1)2+4*(X-1)+2 Написать программу вычисления выражения: Y=3*(X+1)2+4*(X-1)+2. Значение X задавать в режиме диалога. Методом перебора попытайтесь найти такое X при котором Y равен нулю. Предусмотреть вывод... https://www.cyberforum.ru/ cpp-beginners/ thread2497560.html
Задача H. Мадагаскар [C, B’] C++
Лев Алекс, будучи истинным царем зверей, подарил на День Рождения Марти игрушечный зоопарк. Эта модель зоопарка крайне простая и ее можно представить как линию, на которой расположены звери и...
C++ Как записать данную фразу? https://www.cyberforum.ru/ cpp-beginners/ thread2497555.html
Зип файл, уважаемые пользователи форума. Задаю вопрос как начинающий программист. Необходимо записать на c++ фразу "если корень n - ного числа выдает остаток ноль, то...". Про библиотеку <math.h> и...
C++ Минимальное произведение столбиков в матрице Моя задача: среди столбцов заданной целочисленной матрицы, содержащих только такие элементы, которые по модулю не больше 10 найти столбец с минимальным произведением элементов. Код написал,но... https://www.cyberforum.ru/ cpp-beginners/ thread2497548.html Графы. Поиск в глубину C++
Создать программу, которая реализует поиск пути между двумя произвольными вершинами графа согласно варианту. Номера вершин для поиска пути между ними пользователь должен ввести самостоятельно. Для...
C++ Создать аналог strncpy Добрый день. Столкнулся с проблемой: при компиляции нижеприведенного кода выдает ошибку "Run-Time Check Failure #2 - Stack around the variable 'res' was corrupted". Задание заключается в том,... https://www.cyberforum.ru/ cpp-beginners/ thread2497538.html C++ Функция, которая печатает элементы из всех листьев бинарного дерева Написать функцию, которая печатает элементы из всех листьев дерева. Добавлено через 2 часа 26 минут #include <iostream> #include <queue> #include <math.h> struct Node // узел дерева struct... https://www.cyberforum.ru/ cpp-beginners/ thread2497536.html
C++ Вычислить значение выражения
Не могу правильно написать функцию , ругается на pow и exp П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. Редактор формул внизу страницы
C++ Удалить из списка элемент перед первым элементом со значением 55 1. Создать линейный однонаправленный список из действительных чисел. Удалить из списка элемент перед первым элементом со значением 55. #include <iostream> #include <cmath> using namespace... https://www.cyberforum.ru/ cpp-beginners/ thread2497530.html
0 / 0 / 0
Регистрация: 13.06.2019
Сообщений: 58
0

Бинарное дерево. Случайные числа - C++ - Ответ 13812721

07.09.2019, 16:56. Показов 1270. Ответов 0
Метки (Все метки)

Пытаюсь сделать бинарное дерево. Не получается написать функцию для генерации случайных чисел для дерева ( см. в int main() )
Должно получится подобное
Бинарное дерево. Случайные числа

Моя корявая функция случайных чисел печатает:

365 0 1 2 3 4 5 6 7 8 9

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <cstdlib> // для функций rand() и srand()
using namespace std;
 
struct Node //Звено дерева
{
    int x;       //То, что записываем в дерево
    Node *l, *r; //Это указатели, ссылки на новые звенья
};
 
void show(Node *&Tree) //Функция обхода show - переменная
{
    if (Tree != NULL) //Пока не встретится пустое звено
    {
        show(Tree->l);            //Рекурсивная функция для вывода левого поддерева
        cout << Tree->x << '\t'; //Отображаем корень дерева
        show(Tree->r);            //Рекурсивная функции для вывода правого поддерева
        
    }
}
 
/*Добавили очистку памяти*/
void del(Node *&Tree)
{
    if (Tree != NULL) //Пока не встретится пустое звено
    {
        del(Tree->l); //Рекурсивная функция прохода по левому поддереву
        del(Tree->r); //Рекурсивная функци для прохода по правому поддереву
        delete Tree;  //Убиваем конечный элемент дерева
        Tree = NULL;  //Может и не обязательно, но плохого не будет
    }
}
 
void add_node(int x, Node *&MyTree) //Фукция добавления звена в дерево
{
    if (NULL == MyTree) //То, о чем я в самом начале писал. Если дерева нет, то ложим семечко
    {
        MyTree = new Node;              //Выделяем память под звено дерева
        MyTree->x = x;                  //Записываем данные в звено
        MyTree->l = MyTree->r = NULL; //Подзвенья инициализируем пустотой во избежание ошибок
    }
 
    if (x < MyTree->x) //Если нововведенный элемент x меньше чем элемент x из семечка дерева, уходим влево
    {
        if (MyTree->l!= NULL)
            add_node(x, MyTree->l); //При помощи рекурсии заталкиваем элемент на свободный участок
        else                         //Если элемент получил свой участок, то
        {
            MyTree->l = new Node;                 //Выделяем память левому подзвену. Именно подзвену, а не просто звену
            MyTree->l->l = MyTree->l->r = NULL; //У левого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
            MyTree->l->x = x;                     //Записываем в левое подзвено записываемый элемент
        }
    }
 
    if (x > MyTree->x) //Если нововведенный элемент x больше чем элемент x из семечка дерева, уходим вправо
    {
        if (MyTree->r != NULL)
            add_node(x, MyTree->r); //При помощи рекурсии заталкиваем элемент на свободный участок
        else                         //Если элемент получил свой участок, то
        {
            MyTree->r = new Node;                 //Выделяем память правому подзвену. Именно подзвену, а не просто звену
            MyTree->r->l = MyTree->r->r = NULL; //У правого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
            MyTree->r->x = x;                     //Записываем в правое подзвено записываемый элемент
        }
    }
}
 
int main()
{
    Node *Tree = NULL; //Создаю указатель, тип которого = звено дерева и инициализирую его пустотой
    srand(100);
    //for (int i = 5; i > 0; i++)
    for (int i=0; i < 10; ++i)
    
        add_node(i, Tree); 
        std::cout << rand() << "\t";
    show(Tree);         //Вывод на экран дерева. или просто обход дерева
    
 
    del(Tree); //Чистка памяти! Распилили дерево
 
 
    std::cin.clear();
    std::cin.ignore(32767, '\n');
    std::cin.get();
}


Вернуться к обсуждению:
Бинарное дерево. Случайные числа C++
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2019, 16:56
Готовые ответы и решения:

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при...

Бинарное дерево. Поиск числа ветвей по значению
Задание: Написать программу, к-я находит длину пути (число ветвей) от корня до ближайшего значения...

Построить бинарное дерево, элементами которого являются числа
Помогите решить задание: построить бинарное дерево, элементами которого являются числа. Удалить из...

Для каждого числа последовательности узнать, входит ли оно в бинарное дерево
Дана задача: даны две последовательности чисел. Построить бинарное дерево, содержащее числа...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2019, 16:56

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Можно ли создать бинарное дерево поиска с элементами, которые являют собой имена или же что-то другое (НЕ числа)
Если да, как это сделать ? Киньте ссылку/напишите тут, если не сложно. Заранее спасибо!

Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой
Дано бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой.

Бинарное дерево
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; int last; void add(double volue)...

C++, Бинарное дерево
Привет. Можете помочь с заданием. Прочитал кучу теорию по бинарным деревьям. Сел делать вообще не...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.