Помощь - Поиск - Пользователи - Календарь
Полная версия: НЕ рекурсивный поиск в бинарном дереве
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Вася
У меня есть процедура поиска в бинарном дереве с использованием рекурсии, нужно сделать поиск с использованием стека или очереди. Вопрос: как это должно выглядеть?
Код

...
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
Цитата
Вопрос: как это должно выглядеть?
Ответ: сначала надо нажать на "Поиск" вверху страницы, потом вбить в строку поиска нерекур*, и походить по найденным ссылкам... В итоге приходишь вот сюда, и смотришь (включая и ссылки тоже): Создание бинарного дерева и обход

Попробуй реализовать самостоятельно, если не получится - спрашивай...
Вася
Что-то я не могу разобраться. У меня код полная ерунда (даже компилятор не запускается). Пожалуста напишите код процедуры. Буду очень признателен если ещё и с коментариями.
volvo
Это теперь называется попробовать сделать самому? Подождать часик и потом заявить, что код - фигня, компилятор не пропустил, стало быть я его не покажу, поэтому разжуйте мне все, да еще и с комментариями? С чего бы это? Не делаешь ничего сам - ПОМОЩИ не будет... (Хинт: помощь - это когда ТЕБЕ помогают, а не ЗА ТЕБЯ делают, усвойте это уже раз и навсегда!!!)
Вася
Ладно, тогда конкретный вопрос. При описании типа очереди информационная часть 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;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.