![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
*alt |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите переписать сей фрагмент без рекурсии....
Код {проверка на равенство деревьев} function equal(p1, p2 : Ttree) : boolean; begin if (p1=nil) and (p2=nil) then equal := true else if (p1<>nil) and (p2<>nil) then equal := (p1^.info= p2^.info) and equal(p1^.llink, p2^.llink) and equal(p1^.rlink, p2^.rlink) else equal := false end; |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
2 очереди + Нерекурсивный обход дерева в ширину = то, что тебе нужно... (одновременно идешь по обоим деревьям. Выполнять пока ЛИБО обе очереди не будут пустыми (если одна пустая, а вторая - нет, значит деревья НЕ равны) ЛИБО при занесении очередных узлов в очереди их поля INFO не равны...
Если вышеописанное условие не выполнилось, и очереди одновременно (имеется в виду, на одной итерации) стали пустыми - значит, деревья равны. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 11:19 |