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

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

Форум «Всё о Паскале» _ Задачи _ НЕ рекурсивный поиск в бинарном дереве

Автор: Вася 13.04.2008 15:22

У меня есть процедура поиска в бинарном дереве с использованием рекурсии, нужно сделать поиск с использованием стека или очереди. Вопрос: как это должно выглядеть?

Код

...
type
   Tinf = string [20];
   Ttree = ^TNode;
   TNode = record
                inf: Tinf;
                left, right: Ttree;
           end;
   Tptr = ^Tlist;
   Tlist = record
                inf: Tinf;
                next: tptr;
             end;
   TQueue = record
                 head,
                 tail: Tptr;
             end;
...
function Find(Root: TTree; X: Tinf): TTree;
q: Tqueue;
begin
   if Root = nil then Find := nil
   else
    if X = Root^.inf then Find := Root
    else
     if X < Root^.inf then Find := Find(Root^.Left, X)
      else Find := Find(Root^.Right, X);
end;


Автор: volvo 13.04.2008 16:01

Цитата
Вопрос: как это должно выглядеть?
Ответ: сначала надо нажать на "Поиск" вверху страницы, потом вбить в строку поиска нерекур*, и походить по найденным ссылкам... В итоге приходишь вот сюда, и смотришь (включая и ссылки тоже): http://forum.pascal.net.ru/index.php?s=&showtopic=15237&view=findpost&p=88504

Попробуй реализовать самостоятельно, если не получится - спрашивай...

Автор: Вася 13.04.2008 19:14

Что-то я не могу разобраться. У меня код полная ерунда (даже компилятор не запускается). Пожалуста напишите код процедуры. Буду очень признателен если ещё и с коментариями.

Автор: volvo 13.04.2008 19:24

Это теперь называется попробовать сделать самому? Подождать часик и потом заявить, что код - фигня, компилятор не пропустил, стало быть я его не покажу, поэтому разжуйте мне все, да еще и с комментариями? С чего бы это? Не делаешь ничего сам - ПОМОЩИ не будет... (Хинт: помощь - это когда ТЕБЕ помогают, а не ЗА ТЕБЯ делают, усвойте это уже раз и навсегда!!!)

Автор: Вася 13.04.2008 19:32

Ладно, тогда конкретный вопрос. При описании типа очереди информационная часть Tlist должна быть типа Tinf или Tnode?

Код

...
type
Tinf = string [20];
Ttree = ^TNode;
   TNode = record
                inf: Tinf;
                left, right: Ttree;
           end;
   Tptr = ^Tlist;
   Tlist = record
                inf: Tinf;
                next: tptr;
             end;
   TQueue = record
                 head,
                 tail: Tptr;
             end;