Взял исходники с сайта volvo.
Ввожу с клавиатуры: 5 4 3 2 1
Не получается организовать поиск либо из-за того что я не правильно ввожу, или не правильно пользуюсь процедурой. Вот исходник:
uses CRT;
type
T = integer;
TTree = ^TNode;
TNode = record
value: T;
Left, Right: TTree;
end;
procedure Insert(var Root: TTree; X: T);
procedure CreateNode(var p: TTree; n: T);
begin
New(p);
p^.value := n;
p^.Left := nil;
p^.Right := nil
end;
begin
if Root = nil then CreateNode(Root, X)
else
with Root^ do begin
if value < X then Insert(Right, X)
else
if value > X then Insert(Left, X)
end;
end;
function Find(Root: TTree; X: T): TTree;
var p: TTree;
begin
if Root <> nil then begin
p := Root;
while p <> nil do begin
if X < p^.value then p := p^.Left
else
if X = p^.value then Break
else p := p^.Right
end;
Find := p
end
else find:=nil;
end;
var s: integer;
root,q: TTree;
begin
write('Введите любое число от 0 до 100. Конец ввода: 0 ');
repeat
readln(s);
Insert(root,s);
until s=0;
writeln('Введите значение которое хотите найти:');
read(s);
q:=Find(Root,s);
If q<>nil then writeln('Адрес найденого значения:',);
readkey
end.