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.