program Binarni_strom_vyhledavani; uses crt; type UVrchol = ^Vrchol; Vrchol = record hodnota:integer; levy,pravy:UVrchol end; var koren : UVrchol; hod : integer; procedure Inorder(koren :UVrchol); begin if (koren <> nil) then begin Inorder(koren^.levy); write(koren^.hodnota:6); Inorder(koren^.pravy); end; end; procedure Hledej(koren :UVrchol); var nalezeno : boolean; begin nalezeno := false; if (koren <> nil) then begin if koren^.hodnota = hod then begin nalezeno := true; write('Hodnota byla nalezena'); end; if koren^.hodnota > hod then Hledej(koren^.levy); if koren^.hodnota < hod then Hledej(koren^.pravy); end else if nalezeno = false then writeln('Hodnota nebyla nalezena.'); end; procedure Pridej_na_konec(c :integer; var rodic :UVrchol); begin new(rodic); with rodic^ do begin hodnota:=c; levy:=nil; pravy:=nil end; end; procedure Pridej(c :integer; var rodic :UVrchol); begin if (rodic = nil) then Pridej_na_konec(c, rodic) else if not(c = rodic^.hodnota) then begin if c < rodic^.hodnota then Pridej(c, rodic^.levy) else Pridej(c, rodic^.pravy) end; end; procedure Vytvor_Strom(var koren :UVrchol); var rodic : UVrchol; c : integer; begin gotoxy(16,12);write('Vkladej cisla (konec = 999): '); readln(c); if (c <> 999) then Pridej_na_konec(c, koren); while (c <> 999) do begin gotoxy(16,12); write(' '); gotoxy(16,12); write('Vkladej cisla (konec = 999): '); readln(c); if (c <> 999) then begin rodic := koren; Pridej(c, rodic) end; end; end; BEGIN clrscr; gotoxy(10,6); writeln('Program na demonstraci vyhledavani pomoci binarniho stromu'); gotoxy(23,8); writeln('Vytvoril David Padrta - IVT 3'); gotoxy(18,10); writeln('Ze stromu budou vyrazena duplicitni cisla.'); Vytvor_Strom(koren); writeln; write('Vloz hodnotu, kterou chces najit : '); readln(hod); Hledej(koren); writeln; writeln('Vzestupne setrideny soubor cisel : '); Inorder(koren); writeln; writeln('Stiskni ENTER ...'); readln; writeln('Program byl ukoncen.'); END.