Sebelum melakukan pencarian dengan metode ini, maka kita harus terlebih dahulu menentukan atau membuat simpul cabang. Adapun Pendeklarasian Simpul adalah sebagai berikut :
uses crt;
type tree = ^simpul;
simpul = record
info : char;
kiri, kanan : tree
end;
Adapun Fungsi dan Prosedur untuk pembentukan Simpul adalah :
function BARU(Hrf : char) : tree;
var B : tree;
begin
new(B);
B^.info := Hrf;
B^.kanan := nil;
B^.kiri := nil;
BARU := B
end;
procedure sisip(var pohon : tree; Hrf : char);
begin
if pohon = nil then
pohon := BARU(Hrf)
else
if pohon^.info > Hrf then
sisip(pohon^.kiri, Hrf)
else if pohon^.info <>
sisip(pohon^.kanan, Hrf)
else
begin
write('Karakter ', Hrf);
writeln('Sudah ada Dalam Pohon.')
end;
end;
Setelah itu akan terbentuk Sebuah simpul atau dikenal dengan nama lain yaitu Pohon Biner sesuai urutan dan inputan data
Selanjutnya adalah melakukan pencarian, data apa yang ingin di cari. Adapun procedure untuk Metode Pencarian dengan Depth First Seach adalah sebagai berikut :
procedure cari;
var Temp : tree;
begin
Posisi:= 0;
Temp := S;
Ada := False;
inc(Posisi);
while Temp <> nil do
begin
if Temp^.Kanan <> nil then
begin
if Temp^.info = Data then
begin
Ada := True;
Temp := nil
end;
end;
Temp := Temp^.Kiri ;
if Temp^.info = Data then
begin
Ada := True;
Temp := nil
end;
end;
end;
Adapun Program utama untuk memanggil procedure-pricedure di atas adalah :
begin
clrscr;
write('Jumlah data : ');
readln(j);
for i:= 1 to j do
begin
write('Mulai menyisipkan pohon : ');
readln(Data);
sisip(S, Data);
end;
write('Masukkan Data yang dicari : ');
readln(Data);
cari;
If Ada = True then
Writeln(‘Data ‘,Data,’ Ditemukan’)
Else
Writeln(‘Data ‘,Data,’ Ditemukan’);
readln;
end.
Dengan demikian program selengkapnya adalah sebagai berikut :
uses crt;
type tree = ^simpul;
simpul = record
info : char;
kiri, kanan : tree
end;
var S, S1 : tree; var Ada : boolean; var posisi : integer; Data : char;
function BARU(Hrf : char) : tree;
var B : tree;
begin
new(B);
B^.info := Hrf;
B^.kanan := nil;
B^.kiri := nil;
BARU := B
end;
procedure sisip(var pohon : tree; Hrf : char);
begin
if pohon = nil then
pohon := BARU(Hrf)
else
if pohon^.info > Hrf then
sisip(pohon^.kiri, Hrf)
else if pohon^.info <>
sisip(pohon^.kanan, Hrf)
else
begin
write('Karakter ', Hrf);
writeln('Sudah ada Dalam Pohon.')
end;
end;
procedure cari;
var Temp : tree;
begin
Posisi:= 0;
Temp := S;
Ada := False;
inc(Posisi);
while Temp <> nil do
begin
if Temp^.Kanan <> nil then
begin
if Temp^.info = Data then
begin
Ada := True;
Temp := nil
end;
end;
Temp := Temp^.Kiri ;
if Temp^.info = Data then
begin
Ada := True;
Temp := nil
end;
end;
end;
var i, j : integer;
begin
clrscr;
write('Jumlah data : ');
readln(j);
for i:= 1 to j do
begin
write('Mulai menyisipkan pohon : ');
readln(Data);
sisip(S, Data);
end;
write('Masukkan Data yang dicari : ');
readln(Data);
cari;
If Ada = True then
Writeln(‘Data ‘,Data,’ Ditemukan’)
Else
Writeln(‘Data ‘,Data,’ Ditemukan’);
readln;
end.
Tidak ada komentar:
Posting Komentar