Автор: Вася 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;