USES CRT;
type
  TKey = integer;
  PNode = ^TNode;
  TNode = record
          key : TKey;
          left,right : PNode;
          end;
{-----------------------------------}
PROCEDURE make(var p : PNode; x : Tkey);
begin
  new(p);
  p^.key:=x;
  p^.left:=nil;
  p^.right:=nil;
end;


PROCEDURE insert(var p : PNode; h : integer);
begin
  make(p^.left,Random(10){h});
  make(p^.right,Random(10){h});
  if h > 1 then
  begin
  insert(p^.left,h-1);
  insert(p^.right,h-1);
  end;
end;
{--------------------------------------------------------}
PROCEDURE inorder(var p : PNode);

begin
  if p<>nil then
  begin
  inorder(p^.left);
  Write(p^.key,'  ');
  inorder(p^.right);
  end;
end;
{-----------------------------------------------------}
PROCEDURE poisk(var p : PNode);
var k : integer; flag : boolean; x : Tkey; tree : PNode;
begin
{******** poisk klutha *******************}
p:=tree;
While (p <> nil) and (p^.key <> x) do
  if p < p^.key then begin
  p:=p^.left
  else p:=p^.right;
  end;
end;
flag:=(p <> nil);
{******************************************}
  k:=0;
  if p^.key = x then
  begin
  k:=k+1;
  end;
end;

{--------------------------------------------------------}
var p : PNode; x : Tkey;
h,k : integer; tree : PNode;
begin
clrscr;
h:=2;
tree:=nil;
make(tree,Random(10){0});
insert(tree,h);
Writeln('obratnij obhod dereva: ');
inorder(tree);

Writeln;
Writeln;
Writeln('vvedite kluth x: ');
Readln(x);

poisk(tree);

Writeln;
Write('thislo vhogdenij klutha x: ',k);

readln;
end.