![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
Kaskad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 24.9.2004 Репутация: нет Всего: 3 |
Интересует, как в Паскале реализовать деревья.
![]() ![]() -------------------- Well come to America! |
|||
|
||||
Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
По-разному можно
![]() Можно с помощью динамических структур данных например. Да или просто с помощью матрицы. Тут многое зависит от того, какие у тебя деревья: если двоичные например, то будет намного легче чем если у вершины может быть много потомков. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
Zero |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
Это я использовал в своей курсовой работе, по теме "перевод инфиксной записи представленно бинарным деревом, в польскую" |
||||
|
|||||
Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Если дерево не двоичное, т.е. может быть больше чем два потомка, то вместо LP и RP нужно использовать массив:
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
А Parent обязателен? Некоторые задачки этого не требуют...
![]() |
|||
|
||||
Kaskad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 24.9.2004 Репутация: нет Всего: 3 |
Как задать корень? и как добавлять новые эементы? нужно использовать New( что-то) ? А что именно? И как освобождать память?
![]() -------------------- Well come to America! |
|||
|
||||
Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Вот, набросал быстро. Работает вроде правильно. С вопросами обращайся
![]()
Это сообщение отредактировал(а) Fedor - 27.3.2005, 15:49 -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
Kaskad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 24.9.2004 Репутация: нет Всего: 3 |
У меня бинарные деревья- true|false
![]() Я тоже тут состряпал: ![]()
Добавлено @ 16:47 . и в 62 строке выдаёт ошибку! "Инвалит поинтер оператор" почему??? ![]() -------------------- Well come to America! |
|||
|
||||
Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Kaskad Ты не обNILяешь потомков вершины при создании таковой.
Т.е. везде после new(smth) ты должен инициализировать потомков ее как nil. Например:
Кроме этого момента такое нужно сделать дважды в процедуре Add. Кроме того, непонятен раздел переменных в процедуре Add. Насколько я понимаю, son должна быть глобальной переменной, так что в процедуре Add эту переменную нужно убрать. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
Kaskad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 24.9.2004 Репутация: нет Всего: 3 |
Fedor Спасибо!
![]() Значит дерево я создал. Всё отично работает. Теперь создаю процедуру random_add. То есть, чтоб добавляла листок к дереву случайно. Как это лучше сделать? Приходит на ум, сделать random(1024). Разложить в битовый массив из 10 элементов и спускаться по дереву с поворотами в право-1 и лево-0. Может как-нибудь легче это дело можно организовать? ![]() -------------------- Well come to America! |
|||
|
||||
Kaskad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 24.9.2004 Репутация: нет Всего: 3 |
И ещё. У меня такое задание:
Определить уровень двоичного дерева, на катором находиться максимальное число вершин. Раз 20 прочитал и ни чего не понял. Всегда будет корень - будет с максимальным количеством вершин. Или я не прав? ![]() -------------------- Well come to America! |
|||
|
||||
Fedor |
|
||||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
МОжно просто спускаться по дереву и постоянно рендомно генерировать либо 0 либо 1.
На уровне корня (пусть будет нулевой уровень) у тебя только одна вершина: корневая. На первом уровне у тебя потомки корня - их может быть один либо два либо ноль. На втором уровне соотв. от нуля до 2^2 И.т.д. Тебе просто нужно обойти все дерево и считать кол-во вершин на каждом уровне... -------------------- Мы - Днепряне. Мы всех сильней. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |