Anda di halaman 1dari 4

HASIL DAN PEMBAHASAN

program binary_tree;  header program


uses crt;  menyertakan library crt
type ptr = ^Node;  Deklarasi Node dengan atribut
Node = record data, lc, dan rc.

data : string;
lc : ptr;
rc : ptr;
end;
var
choice : char;  Deklarasi variable, yaitu:
data,key : string; String/char : data,key,choice

ketemu : boolean; Boolean : ketemu

newNode,root : ptr; Ptr : newNode,root

 Procedure insert :
prosedur untuk melakukan insert data ke dalam root.
procedure insert(var _root : ptr; _data : string);
begin
new (newNode);
newNode^.data := _data;
if _root = NIL then
begin
newNode^.lc := NIL;
newNode^.rc := NIL;
_root := newNode;
end else
begin
if _data <= _root^.data then
insert(_root^.lc,_data)
else insert(_root^.rc,_data);
end;
end;

- Procedure insert(var _root:ptr;_data : string)  nama prosedur


dan pendefinisian paramater yaitu _root(ptr) dan _data(string)
- New (newNode)  Membuat node baru dengan nama newNode.
- newNode^.data := _data  mendefinisikan/menginisiasi newNode

-  Membandingkan nilai _root,


if _root = NIL then
jika nilai _root sama dengan NIL
begin
atau NULL, berarti belum ada data
newNode^.lc := NIL;
pada tree sehingga data
newNode^.rc := NIL;
dimasukkan ke simpul pertama atau
_root := newNode;
root.
end

 proses membandingkan
else begin
nilai _root, jika
if _data <= _root^.data then
nilainya selain dari
insert(_root^.lc,_data)
NIL/NULL maka lakukan
else insert(_root^.rc,_data);
lagi proses pembandingan,
jika data lebih kecil
maka dimasukkan ke node kiri, selain dari kondisi itu data di
masukkan ke node kanan.

procedure display(_root : ptr);  proses untuk menampilkan data


begin dengan urutan in Order
if (_root <> nil) then Traversal (left, root, data).

begin Telusuri seluruh node kiri

display(_root^.lc); terlebih dahulu, kemudian


telusuri seluruh node kanan.
write(_root^.data,' ');
display(_root^.rc);
end;
end;
procedure find(_root : ptr; _key : string); //pencarian kamus
begin
if _root <> NIL then
begin
if _key = _root^.data then
begin
ketemu := True;
exit;
end
else if _key < _root^.data then find(_root^.lc, _key)
else find(_root^.rc, _key);
end;
end;

 Prosedur untuk mencari data dengan metode Binary Search Tree


(BST) atau pencarian kamus. Root dilihat nilainya terlebih dahulu
apakah dia NIL/NULL atau tidak. Kemudian pada logika pertama, jika
key sama dengan data pada root maka ubah nilai ketemu True lalu exit
prosedur.

Lalu, jika key kecil dari data pada root maka telusuri left
child untuk dicari datanya, sebaliknya telusuri right child jika
data lebih besar.

 Procedure menu pada program berfungsi untuk menampilkan menu-menu


yang dapat dipilih oleh user.
Begin
root := NIL;
repeat
clrscr;
ketemu := False;
menu;

penggalan kode di atas berfungsi untuk mendefinisikan nilai awal


dari root yaitu NULL/NIL. Kemudian melakukan perulangan, pada setiap
perulangan dimulai, nilai ketemu dijadikan False. Panggil prosedur
menu untuk menampilkan menu.

case choice of
'1':
begin
write('INSERT DATA : ');
readln(data);
insert(root,data);
end;
'2':
begin
display(root);
readkey;  menahan tampilan
end;
'3':
begin
write('INSERT NILAI YANG AKAN DICARI : ');
readln(key);
find(root,key);
if ketemu then
writeln('DATA DITEMUKAN')
else writeln('NILAI TIDAK DITEMUKAN');
readkey;
end
end;
until choice = '4';
end.

Percabangan untuk menghandel pilihan pada menu. Jika user


menginputkan ‘1’ maka prosedur insert akan dijalankan. Jika input
‘2’ maka prosedur display akan dijalankan. Lalu, jika input ‘3’ maka
prosedur untuk mencari data akan dijalankan.

Anda mungkin juga menyukai