Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Дерево без рекурсии?

Автор: *alt 27.04.2008 19:29

Помогите переписать сей фрагмент без рекурсии....

Код

{проверка на равенство деревьев}
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 27.04.2008 19:52

2 очереди + http://pco.iis.nsk.su/ICP/Practice/dd8-3/node6.html = то, что тебе нужно... (одновременно идешь по обоим деревьям. Выполнять пока ЛИБО обе очереди не будут пустыми (если одна пустая, а вторая - нет, значит деревья НЕ равны) ЛИБО при занесении очередных узлов в очереди их поля INFO не равны...

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