![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
sswt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 22.9.2015 Репутация: нет Всего: нет |
Нужно найти значение в дереве. И как всегда у меня баги((( Где ошибки у меня?
Мой код:
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
+ InsertValue() должен добавлять узел в дерево в правильное место. Это сообщение отредактировал(а) math64 - 2.11.2015, 16:00 |
|||
|
||||
feodorv |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
С рекурсией:
Без рекурсии:
Использовать:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||
|
|||||||
sswt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 22.9.2015 Репутация: нет Всего: нет |
math64, спасибо
Это сообщение отредактировал(а) sswt - 2.11.2015, 16:38 |
|||
|
||||
sswt |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 22.9.2015 Репутация: нет Всего: нет |
math64, у вас бага . Так должно быть:
Добавлено через 9 минут и 7 секунд feodorv, а вот это :
|
||||||
|
|||||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Только так:
Это не бага, это фича. Выбор знака > или < зависит от направления сортировки (от меньших значений к большим или, наоборот, от больших значений к меньшим), каковое Вы не указали. Это сообщение отредактировал(а) feodorv - 2.11.2015, 21:28 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
sswt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 22.9.2015 Репутация: нет Всего: нет |
feodorv, хм я думала влево идут значения которые меньше корня а в право больше в дереве.
|
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Ну, это зависит от задачи. Сортировка в обратном порядке тоже широко используется))) Вы же нигде не задали направление сортировки, поэтому и такой способ сортировки отвечает начальным условиям задачи. Если нужно сортировать от меньших значений к большим, тогда, да, -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Главное - чтобы FindValue и InsertValue сортировали одинаково. В норме leftNode и rightNode должны быть приватными и пользватель класса не видит какой порядок сортировки внутри дерева. Но sswt по какой-то причине не хочет пользоваться классами (хотя пишет на C++) Это сообщение отредактировал(а) math64 - 3.11.2015, 08:17 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Чтобы добиться согласованности, можно добавить вспомогательную функцию:
Но после вставки узла рекомендуется делать балансировку: Если добавлять узлы в порадке 1, 2, 3, 4, 5 - узлы будут добавляться только в rightNode (или leftNode - в зависимости от порядка сортировки). |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Просто sswt думает, что пишет на C. Это да. Ну, и обход дерева тоже делать согласовано))) Думаю, нас это ещё ждет впереди ![]() -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |