Kamis, 01 Mei 2008

Deep First Search

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: