Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Есть ли какая-нибудь команда, которая находит минимальное число в массиве? А то очень сложно сравнивать 100 элементов в ручную Или команда, которая хотя бы просто сравнивает элементы. https://www.cyberforum.ru/ cpp-beginners/ thread2252430.html C++ Сформировать одномерный массив из элементов матрицы, расположенных над главной диагональю
Дан двумерный массив размером nxn. Сформировать одномерный массив из элементов заданного массива, расположенных над главной диагональю. Для решения необходимо в программе производить чтение входных данных из файла, а результаты работы программы записывать в файл. В программе для решения поставленной задачи необходимо использовать динамическое выделение памяти, решение небольших подзадач...
C++ Создать файл, содержащий сообщение о студентах (фамилии, инициалы) и результаты аттестации Создать файл, содержащий сообщение о студентах (фамилии, инициалы) и результаты аттестации. Прочитать файл и вывести на экран, и в файл список не аттестованных студентов. C++ https://www.cyberforum.ru/ cpp-beginners/ thread2252426.html C++ Дан двумерный массив. Переставить в обратном порядке строки, расположенные между k-й и s-й строками https://www.cyberforum.ru/ cpp-beginners/ thread2252425.html
Дан двумерный массив из пятнадцати строк и восьми столбцов. Переставить в обратном порядке строки, расположенные между k-й и s-й строками (т. е. с (k + 1)-й по (s – 1)-ю). Значения k и s вводятся с клавиатуры, k < s.
Возможно ли сделать определенное количество переменных в цикле? C++
В общем у меня есть одна вводимая переменная, которая указывает на количество других переменных, и собственно вопрос: можно ли сделать несколько этих самых других переменных в цикле?
C++ Конструктор класса не дает инициализировать переменную класса https://www.cyberforum.ru/ cpp-beginners/ thread2252415.html
Привет. Вот такой вот класс. Когда пытаюсь в конструкторе присвоить name и hobby что либо, пишет ошибку: выражение должно быть допустимым для изменения левосторонним значением. Покопался в предыдущих по книге примерах, классов с char в привате не нашел. Вообще непонятно, потому что const нигде нету. Cow::Cow() { name = "cow"; //ОШИБКА! hobby = "hi"; //значение типа const char нельзя...
C++ Прямоугольники и гвозди (C++) https://www.cyberforum.ru/ cpp-beginners/ thread2252317.html
Не могу понять суть задачи, помогите пожалуйста) На координатной плоскости задано N прямоугольников – кождый парой противоположных вершин, стороны которых параллельны осям координат, а координаты вершин – целые числа из промежутка . Какое наибольшее количество прямоугольников можно прибить к плоскости одним гвоздём? Прямоугольник считается прибитым, если гвоздь забит во внутреннюю точку...
C++ Нужно написать метод разности множеств в классе
Доброго времени суток. Нужно написать метод разности множеств. Код класса: #include <iostream> using namespace std; class Set
C++ Подсчет суммарного количества страниц в словарях https://www.cyberforum.ru/ cpp-beginners/ thread2252273.html
Не могу понять в чем именно ошибка, может вы сможете мне помочь? char language; int number, i, j, n, sum, k, t, ser; boolean a; ifstream f1(name, ios::binary); for (i = 0; !f1.eof(); i++) { f1 >> d.language; f1 >> d.number; strcpy(language, d.language); number = d.number;
C++ Заполнение матрицы змейкой https://www.cyberforum.ru/ cpp-beginners/ thread2252271.html
Дано натуральное N (1<=N<=10). Заполнить матрицу размера N*N целыми числами 0, 1, 2, 3, …, N^2–1 Как сделать, что бы матрицу заполнило N^2 т.е: например при вводе 5 , что бы получилось так 1 2 3 4 5 16 19 22 25 6 15 18 21 24 7 14 17 20 23 8 13 12 11 10 9 #include <iostream> #include <cstdlib>
Выбрать все простые числа из списка и поместить их в список типа очередь C++
end не однозначный символ, как исправить то народ? задание: Создать двусвязный список целых чисел. Выбрать все простые числа и поместить их в односвязный список типа очередь. Удалить эти числа из двусвязного списка. Результаты отображать на экране. #include "stdafx.h" #include <iostream> #include <windows.h> #include <ctime> using namespace std;
C++ Зеркальное отображение пар триад битов https://www.cyberforum.ru/ cpp-beginners/ thread2252237.html
Реализовать алгоритм зеркального отображения пар триад битов значения целого числа без знака
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
0

Как в программе происходит прямой обход по бинарному дереву? - C++ - Ответ 12419345

24.05.2018, 16:40. Показов 612. Ответов 0
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include "stdafx.h"
#include <iostream> 
using namespace std;
struct Node
{
    Node *l, *r; //левое и правое поддерево
    int x; //Некоторые данные
};
 
/*ФУНКЦИЯ ДОБАВЛЕНИЯ ЗВЕНА В ДЕРЕВО*/
void add(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(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(x, MyTree->r); //При помощи рекурсии заталкиваем элемент на свободный участок
        else //Если элемент получил свой участок, то
        {
            MyTree->r = new Node;  //Выделяем память правому подзвену. Именно подзвену, а не просто звену
            MyTree->r->l = MyTree->r->r = NULL; //У правого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
            MyTree->r->x = x; //Записываем в правое подзвено записываемый элемент 
        }
    }
 
}
 
/*ОБХОД В ПРЯМОМ ПОРЯДКЕ*/
void Show(Node *&tree)
{
    if (NULL == tree)    return;    //Если дерева нет, выходим
 
    cout << tree->x << endl; //Посетили узел
    Show(tree->l); //Обошли левое поддерево   
    Show(tree->r); //Обошли правое поддерево   
}
int main()
{
    int x; //Некоторые данные
    Node *MyTree = NULL; //Указатель на нашу структуру. Инициализируем во избежание ошибок
 
    for (int i = 0; i<7; i++) //В дереве будет 7 узлов
    {
        cout << "X = "; cin >> x; //Ввели X с клавиатуры
        add(x, MyTree); //Добавили X в дерево
    }
 
    Show(MyTree);
Вот нашел, добавления элемента в дерево понят, а вот обход нет, она правильно выводит прямой обход по дереву, но как он это делает, как он знает, что надо начала по левой стороне идти и в той же левой стороне выводить потом правые элементы, тут же нету никакх встроенных функций, которые бы это делали????

Вернуться к обсуждению:
Как в программе происходит прямой обход по бинарному дереву? C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2018, 16:40
Готовые ответы и решения:

Итератор по бинарному дереву
Всем привет! Помогите пожалуйста! Пишу бинарное дерево, нужно реализовать итератор по нему. Не...

Подключение к бинарному дереву списка
Вот есть такой вот код. Не могу подключить к моему узлу бинарного дерева односвязный список ...

Итератор для обхода по бинарному дереву
Кхм. Попытался реализовать итератор для обхода по бинарному дереву... Наткнулся на запару. Дерево...

Поиск по бинарному дереву целочисленных значений
Здравствуйте! Очень нужна помощь данном, надеюсь что простом, задании. Заранее спасибо!:-[ ...

0
24.05.2018, 16:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2018, 16:40
Помогаю со студенческими работами здесь

Поиск по бинарному дереву, построение бинарного дерева
Сделал 3 процедуры: 1. строит бинарное дерево 2. рекурсивная процедура помогает 1-ой найти...

Довести до ума программу про бинарному дереву
Здравствуйте. Помогите пожалуйста привести до ума задачу: организовать бинарное дерево по заданной...

Обход по дереву
Доброго вам дня всем! Есть некоторые вопросы по одной задаче из теории. Прошу помочь в них...

Разница между понятиями "Обход в прямом направлении" и "Итерационный прямой обход"
Ребятаа, обьясните чем различается: Обход в прямом направлении и Итерационный прямой обход ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru