Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249

Класс Бинарное дерево

08.12.2022, 01:02. Показов 2045. Ответов 34

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите, пожалуйста, как реализовать класс Бинарное дерево. Вне кода я понимаю, как бинарное дерево устроено. Но я не знаю, как его реализовать в класс.

Также нужно создать следующие методы: добавить слева, добавить справа, удалить слева и удалить справа. Ну и, для проверки, неплохо бы еще метод с выводом данных, чтобы как-то проверить работоспособность кода)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2022, 01:02
Ответы с готовыми решениями:

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

Класс бинарное дерево
Здравствуйте. Требуется написать англо-русский словарь на основе бинарного дерева. Не полностью понимаю, как будет выглядеть класс....

Класс, реализующий Бинарное дерево
Добрый день! Как реализовать класс, реализующий Бинарное дерево при помощь с++. Спасибо за внимание

34
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
08.12.2022, 17:18
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SmallEvil Посмотреть сообщение
С какого перепугу дерево имеет данные ?
Очевидно, что это одна из вершин дерева. Но отдельно взятая вершина уже полностью определяет дерево (это она и все его потомки). Поэтому разделять их (делать отдельную структуру для хранения только лишь одного узла и говорить, что это и есть дерево) смысла мало.
Присмотритесь - основное отличие вашего кода от моего - это наличие достаточно бесполезного класса MyBTree. Большинство методов которого по сути статические или их спокойно можно перенести в Node (SimplePrint, например, или те же Add и Delete и не посылать указатель первым параметром).
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
08.12.2022, 17:29
Цитата Сообщение от woldemas Посмотреть сообщение
Очевидно, что это одна из вершин дерева.
Так оказывается это вершина дерева, а не само дерево ?
И не надо мне тут "Присмотритесь" и "а не то что вам показали когда-то на лекции и сказали, что именно это и есть бинарное дерево".
Я все прекрасно увидел с первого раза.
Это вы в плотную отрицаете факты и не видите различий.
Можно было просто сказать, что вот такое я "дерево" себе представил.
И не нужно впаривать арбузы вместо дынь.
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
08.12.2022, 17:42
Цитата Сообщение от SmallEvil Посмотреть сообщение
Так оказывается это вершина дерева, а не само дерево ?
Это одно и тоже. А какие же у них различия?

Добавлено через 9 минут
Для меня различия между вершиной и деревом - чисто субъективные. Вершину мы начинаем называть деревом, когда рассматриваем ее, как корневую. Но физически ничего не изменилось - она как была вершиной, так и осталась.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
08.12.2022, 18:01
Цитата Сообщение от woldemas Посмотреть сообщение
Вершину
А что такое "вершина" ? я хз что это.
Видимо у вас нет четких представлений, что есть что.
Поэтому и деревья у вас есть "всё" и "всё" есть деревья. Типа : "Я есть Грут!".
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
08.12.2022, 18:17
Цитата Сообщение от SmallEvil Посмотреть сообщение
А что такое "вершина" ? я хз что это.
Граф знаете, что такое? Терминологически слово "вершина" появляется, если дерево рассматривается как граф.
Если как рекурсивная структура данных - то этот термин не нужен вовсе.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
08.12.2022, 18:21
Цитата Сообщение от woldemas Посмотреть сообщение
Граф знаете, что такое?
Знаю.
Вот как знал что вспомните про него.
Все с вами понятно. Идите заблуждайтесь дальше или что вы там по вашему делаете (абстрагируетесь ? сомневаюсь).
Разговор настолько бессмыслен что я устал.
0
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
09.12.2022, 01:36  [ТС]
lemegeton, Тьфу ты, я в позднее время протупил. Не копирование, а вывод информации

Добавлено через 1 минуту
SmallEvil,
Цитата Сообщение от SmallEvil Посмотреть сообщение
Какое вы там описание ожидаете ?
К методам - что они делают (в виде комментариев к программе)

Добавлено через 1 минуту
В плане чему нас учат - никто не учил нас бинарному дереву. Я примерно понимал, что это. В интернете подкрепил знания о нем. Но вот за реализацию мне говорят просто "делай. А помогать разбираться не буду". У нас препод вообще забавный, молодой ассистент. Сегодня поможет с программой, а завтра думай сам, почему не работает
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
09.12.2022, 01:49
Цитата Сообщение от Fershtein Посмотреть сообщение
К методам - что они делают (в виде комментариев к программе)
Типа от так, как для дятлов ? Да ни один разумный человек такое делать не будет.
Кстати, в моем коде в этом методе ошибка, заменить этим.
C++
1
2
3
4
5
6
7
8
9
10
11
12
    // эта функция удаляет левое (left = true) поддерево или правое  (left = false)
    void Delete(Node * to, bool left){
        if (to){ // если узел существует
           if (left){ // если true удаляем левый узел
               delete to->left; // освобождаем левый узел
               to->left = nullptr; // обнуляем указатель на левый узел 
           }else{ // иначе - удяляем правый узел
               delete to->right; // освобождаем правый узел
               to->right = nullptr; // обнуляем указатель на правый узел 
           }
        }
    }// конец функции удаления дочерних деревьев
Цитата Сообщение от Fershtein Посмотреть сообщение
Сегодня поможет с программой, а завтра думай сам, почему не работает
А как должно быть ?
0
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
10.12.2022, 13:56  [ТС]
SmallEvil, А как происходит удаление и добавление элементов? Хотелось бы, чтобы это делалось вручную (ну или покажите, пожалуйста, участок кода, где нужно прописывать числа)
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
10.12.2022, 16:24
Лучший ответ Сообщение было отмечено Fershtein как решение

Решение

Цитата Сообщение от Fershtein Посмотреть сообщение
Хотелось бы, чтобы это делалось вручную
Дык, так это и делается вручную. В main.
Только в место чисел, я подставляю автоинкрементирующийся счетчик.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    MyBTree<int> tree;
    using Node = TNode<int>;
    // <<-- Построение дерева -->>//
    Node *root = tree.SetRoot(100);
    // add left and right childe and fix/get it's pointers
    Node* root_left = tree.Add(root, -1, true);
    Node* root_right = tree.Add(root, +1, false);
    // <<-- Дерево построено -->>//
    cout << "Tree : " << endl;
    cout << "===============================" << endl;
    tree.SimplePrint();
    cout << "===============================" << endl;
 
}
А вообще нет никакой сложности сохранять/ загружать дерево в файл. Что бы вручную его не создавать.
В консоли без Гуи, это как водку в полной темноте , пить можно, но много не туда идет

Добавлено через 2 минуты
Цитата Сообщение от Fershtein Посмотреть сообщение
А как происходит удаление
Удаляя узел - удаляется все поддерево.
C++
1
2
3
4
5
 // важно, что бы все внешние узлы имели nullptr
    ~TNode(){
        delete left; // удаляется рекурсивно левое поддерево
        delete right; // удалятеся рекурсивно правое поддерево
    };
1
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
11.12.2022, 09:26  [ТС]
SmallEvil, А можно без счетчика, а просто вставкой числа?
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
12.12.2022, 11:32
Цитата Сообщение от Fershtein Посмотреть сообщение
просто вставкой числа?
Цитата Сообщение от SmallEvil Посмотреть сообщение
-1
Цитата Сообщение от SmallEvil Посмотреть сообщение
+1
Энто ж и есть просто числа, -1 и +1. два числа
0
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
12.12.2022, 14:31  [ТС]
SmallEvil, Ну то есть вместо +1 я могу написать +5?
0
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
15.12.2022, 09:21  [ТС]
SmallEvil,
Цитата Сообщение от SmallEvil Посмотреть сообщение
Node* root_left = tree.Add(root, -1, true);
    Node* root_right = tree.Add(root, +1, false);
А можете еще, пожалуйста, добавить пару строчек кода, где дерево дальше "ветвится"? Ну то есть к левому значению корня добавить ветки с левым и правым значениями. Буду очень благодарен!

И с удалением, пожалуйста
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
15.12.2022, 12:05
Fershtein, Привет вам от Васи Обломова.
Ну а я ... , еду в ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2022, 12:05

Описать класс, реализующий бинарное дерево
помогите ..ребят знаю что обсуждалось уже кучу раз..но у мне выдаёт ошибки..разобраться не могу..эту роботу должна сдать очень скоро..(( ...

Нужно реализовать класс Бинарное дерево.
Нужно реализовать класс Бинарное дерево. Вот класс template &lt;class T&gt; class Tree { private: class Item{ friend Tree; ...

Описать класс, реализующий бинарное дерево
Описать класс, реализующий бинарное дерево, обладающее возможностью добавления новых элементов, удаления существующих, поиска элемента по...

Описать класс, реализующий бинарное дерево
Здравствуйте! Возникли проблемы с реализацией одной программы ....Описать класс, реализующий бинарное дерево, обладающее возможностью...

Создать шаблонный класс «бинарное дерево»
Создать шаблон класса «бинарное дерево». Использовать его для сортировки целых чисел и строк, задаваемых с клавиатуры Можно простой код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru