|
2 / 0 / 0
Регистрация: 22.03.2010
Сообщений: 18
|
|
бинарные деревья03.02.2011, 21:32. Показов 4479. Ответов 28
Метки нет (Все метки)
Вершина двоичного дерева содержит указатель на строку и указатели на правое и левое поддеревья. Строки в дереве упорядочены по возрастанию. Написать функции включения строки и получения указателя на строку по заданному номеру, который строки имеет в упорядоченной последовательности.
заранее спасибо
0
|
|
| 03.02.2011, 21:32 | |
|
Ответы с готовыми решениями:
28
бинарные деревья Бинарные деревья Бинарные деревья |
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 03.02.2011, 21:44 | |
|
Ииии? Что непонятно?
0
|
|
|
2 / 0 / 0
Регистрация: 22.03.2010
Сообщений: 18
|
|
| 03.02.2011, 21:53 [ТС] | |
|
проблема в том, что я не знаю как выполнять задания с помощью бинарных деревьев, да и вообще с программированием неочень( я люблю it а там без этого никак)
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 03.02.2011, 22:03 | |
|
Не по теме: Похоже на "я очень люблю есть, но совсем не умею готовить". Не хочу никого переубеждать и поучать, но если не получается, может лучше не браться? А то и обжечься можно... Так, это было не по теме. Теперь по теме: если я чего-то не знаю, я беру соответствующую литературу и начинаю производить один из основополагающих процессов, который мы все производим каждый день: процесс познания. Не ждите, что кто-то придёт и напишет за вас одну лабу, потому другую, потом экзамен, а потом и диплом за вас получит. Гуглите по теме бинарных деревьев и изучайте их. Читайте книги по Си++. Благо, и того, и другого в интернете навалом, хорошего и разного. Бинарные деревья несложные, язык посложнее. Но вас никто не тянул за руку в вашу любимую IT, и раз уж вы сюда пришли - изучайте, пробуйте, ошибайтесь и снова пробуйте.
0
|
|
|
2 / 0 / 0
Регистрация: 22.03.2010
Сообщений: 18
|
|
| 03.02.2011, 22:11 [ТС] | |
|
Совет конечно хороший, я так делаю. Но сейчас мне нужен просто код, я в нем разбираюсь и потихоньку понимаю его.
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|||||||||||
| 03.02.2011, 22:29 | |||||||||||
Сообщение было отмечено как решение
Решение
Писать код полностью не буду, писал когда-то для себя просто шаблонный клас двоичного дерева. Вот его и выложу.
TreeNode.h
6
|
|||||||||||
|
2 / 0 / 0
Регистрация: 22.03.2010
Сообщений: 18
|
|
| 03.02.2011, 22:56 [ТС] | |
|
спасибо
0
|
|
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
|
| 04.02.2011, 01:12 | |
|
silent_1991, прости за столь интимный вопрос: а почему дерево является другом своего узла? В смысле, зачем определять узел дерева отдельно от самого дерева, порождая тем самым лишние проблемы и лишние шаблоны.
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 04.02.2011, 11:45 | |
|
volovzi, и в чём же лишние проблемы? У нас есть основная часть - узел, который содержит указатели на поддеревья и данные, которые должны в дереве храниться. И есть собственно дерево - обёртка, в ней основные функции работы с деревом и только указатель на корень дерева. Весь цивилизованный мир так делает, для большинства структур данных этот способ подходит, и является, кстати, очень удобным. Например, для связного списка точно так же, делаем узел списка, который содержит указатель на следующий элемент (и, в случае двусвязного списка, на предыдущий) и данные, и делаем обёртку - основные функции работы со списком и указатели на начало и конец. Дружбу устанавливаем для свободного доступа к данным и указателям, без сеттеров/геттеров.
0
|
|
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
|
| 04.02.2011, 12:05 | |
|
silent_1991, я не о том спрашиваю. Зачем делать узел дерева отдельно от дерева, если он больше нигде не используется?
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 04.02.2011, 12:16 | |
|
volovzi, я же сказал, у нас есть основная часть - узел (в нём хранятся данные и указатели на поддеревья) и обёртка - указатель на корень и функции обработки. По мне, так конфету с фантиком не надо соединять, пусть будут отдельно, так ведь удобнее.
0
|
|
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
|
| 04.02.2011, 12:20 | |
|
silent_1991, ты не понял. Я вот что имею в виду:
Написать класс, описывающий дерево
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 04.02.2011, 12:30 | |
|
Ладно, так: зачем в обёртку, функциям которой нужно знать только одно - откуда начинается дерево, делать одновременно и узлом?
Давайте представим что мы не знает ООП вообще, и Си++ в частности. Как бы мы писали всё это дело, скажем, на Си? Вы бы написали структуру, представляющую узел, которая хранит данные и указатели. Во "внешней среде" мы бы хранили указатель на корень (возможно, это была бы глобальная переменная) и описали бы функции работы с деревом. А теперь мы вдруг знаем ООП и Си++. Так давайте эту "внешнюю среду" сожмём до уровня, на котором она действительно нужна - до уровня обёртки, которая содержит указатель на корень и функции обработки. И общаться с собственно деревом будем посредством этой обёртки, а не посредством "внешней среды" в стиле Си. Добавлено через 1 минуту Отвечаю: мне так захотелось. Вдруг я захочу сделать узел универсальным, для любых деревьев. Тогда мне придётся изменить сам TreeNode, но зато доступ к нему будут иметь и класс универсальных деревьев, и бинарных, и красно-чёрных и т.д.
0
|
|
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
||||||
| 04.02.2011, 12:34 | ||||||
|
silent_1991, тогда нужно в дерево передавать в качестве параметра шаблона не тип данных, а тип узла и делать универсальным не узел, а дерево
.Узел красно-чёрного будет отличаться от узла другого дереве, так что в разных деревьях их использовать не получится. Вот, собственно:
0
|
||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 04.02.2011, 12:38 | |
|
volovzi, я, честно говря, так и не понял, о чём идёт спор
Вы сделали в своём классе так, я иначе. От моего решения класс дерева пострадает по отношению к вашему? Нет. Так к чему придираться?
0
|
|
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
|
| 04.02.2011, 12:46 | |
|
silent_1991, это не спор, это попытка найти оптимальное решение. Мне интересно, вот и копаю.
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 04.02.2011, 12:47 | |
|
volovzi, я всегда со всеми структурами данных так делал, отдельно описывал узел, отдельно обёртку. И у многих авторов обучающей литературы этот подход встречал.
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 04.02.2011, 12:50 | |
|
В случае дерева вообще не нужен тип всего контейнера, всё делает класс узла. Да и к любым другим спискам это тоже относится. Разделить же на два типа можно только тип поля данных и класс узла. Кстати, это разделение как раз и целесообразно и не только для списков.
0
|
|
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
|
| 04.02.2011, 12:55 | |
|
taras atavin, контейнер не обязателен, но весьма полезен. Он хранит первый элемент, а так же дополнительные данные (последний элемент, размер и т.п.).
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 04.02.2011, 12:58 | |
|
Ну если только для дополнительных данных, но последний элемент имеет хоть какой то смысл только у линейных списков. Во что тогда превращается тип дерева? В оболочку только лишь для указателя на корень, чей тип и так описан.
0
|
|
| 04.02.2011, 12:58 | |
|
Помогаю со студенческими работами здесь
20
Бинарные деревья Бинарные деревья Бинарные деревья Бинарные деревья С++
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|