![]() |
|
Модераторы: 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. |