Помощь - Поиск - Пользователи - Календарь
Полная версия: Дерево без рекурсии?
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
*alt
Помогите переписать сей фрагмент без рекурсии....
Код

{проверка на равенство деревьев}
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 очереди + Нерекурсивный обход дерева в ширину = то, что тебе нужно... (одновременно идешь по обоим деревьям. Выполнять пока ЛИБО обе очереди не будут пустыми (если одна пустая, а вторая - нет, значит деревья НЕ равны) ЛИБО при занесении очередных узлов в очереди их поля INFO не равны...

Если вышеописанное условие не выполнилось, и очереди одновременно (имеется в виду, на одной итерации) стали пустыми - значит, деревья равны.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.