|
2 / 0 / 0
Регистрация: 22.03.2010
Сообщений: 18
|
|
бинарные деревья03.02.2011, 21:32. Показов 4616. Ответов 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
Бинарные деревья Бинарные деревья Бинарные деревья Бинарные деревья С++
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|