Anda di halaman 1dari 26

Pertemuan 15

1
Materi

Tree
• Definisi Tree
• Pohon Biner
• Implementasi Pohon Biner
• Operasi Pada Pohon Biner

UNIVERSITAS NURDIN HAMZAH - JAMBI 2


SUB-CPMK

Kemampuan Akhir tiap Tahapan Belajar (SUB-CPMK) :


• Mampu memahami konsep tree.
• Mampu menerapkan konsep tree pada pemrograman Pascal dengan contoh
kasus.

UNIVERSITAS NURDIN HAMZAH - JAMBI 3


Tree
Definisi
Tree
Definisi
• Tree adalah salah satu bentuk konsep struktur data yang terdiri dari akar dan simpul-
simpul yang berada di bawah akar. Dalam kehidupan nyata biasanya sebuah struktur
data tree digunakan untuk menggambarkan struktur suatu organisasi atau struktur
silsilah sebuah keluarga.
• Ilustrasi struktur data tree sebagai gambaran suatu organisasi dapat dilihat pada gambar
di bawa ini :

UNIVERSITAS NURDIN HAMZAH - JAMBI 5


Tree
Definisi
• Pada gambar di slide sebelumnya sebuah kotak dianggap sebagai simpul (node atau vertex)
sedangkan simpul yang paling atas yang berisi ‘Ketua Umum’ dianggap sebagai akar(root). Bagian
simpul ‘Wakil Ketua I’ ke bawah disebut subpohon(subtree).
• Sebuah struktur tree juga memiliki apa yang disebut dengan tingkat(level). Tingkat di mulai dari akar
yang dianggap sebagai tingkat 1 dan simpul-simpul di bawahnya mempunyai tingkat ditambah
dengan satu namun ada beberapa pendapat yang menganggap akar sebagai tingkat 0, agar lebih jelas
mengenai tingkat dapat dilihat pada gambar di bawah ini :

UNIVERSITAS NURDIN HAMZAH - JAMBI 6


Tree
Definisi
• Selain istilah tingkat juga ada yang disebut dengan derajat(degree). Derajat merupakan
benyaknya simpul turunan dari suatu simpul tertentu, misalkan simpul ‘Ketua Umum’
memiliki derajat 2, simpul ‘Wakil Ketua I’ memiliki derajat 2, dan seterusnya. Semua
simpul yang memiliki derajat 0 disebut dengan daun(leaf).
• Pada struktur data pohon juga dikenal istilah yang disebut kedalaman(depth) yang
merupakan hasil dari tingkat simpul maksimum dikurangi dengan 1 sehingga pada
pohon contoh di atas memiliki kedalaman 2 sedangkan sebuah simpul yang ada di atas
sebuah simpul lain disebut sebagai ancestor.

UNIVERSITAS NURDIN HAMZAH - JAMBI 7


Tree
Definisi
• Contoh ilustrasi dari tree :

Keterangan :
= Root / Akar
= Leaf / Daun
Semua Bulatan = Nodes/Vertex/Simpul
Node B adalah node induk Dari : C, D, E
Node C, D, E adalah Node Anak dari node B

UNIVERSITAS NURDIN HAMZAH - JAMBI 8


Pohon Biner
Definisi
Pohon Biner
Definisi
• Pohon biner atau binary tree adalah pohon yang setiap simpulnya memiliki simpul
turunan atau subpohon maksimal dua yang disebut sebagai subpohon kiri(left subtree)
dan subpohon kanan (right subtree). Jenis-jenis pohon biner adalah sebagai berikut :
Keterangan Representasi

Full binary tree adalah sebuah


tree yang semua node (kecuali
leaf/daun) pasti memiliki anak
dan tiap subpohon memiliki
panjang yang sama.

UNIVERSITAS NURDIN HAMZAH - JAMBI 10


Pohon Biner
Definisi
Keterangan Representasi

complete binary tree), yaitu pohon


biner yang hampir mirip dengan full
binary tree, tapi setiap subtree boleh
memiliki panjang path yang berbeda
dan tiap node(kecuali leaf) memiliki 2
anak

Pohon biner condong kiri (left skewed


binary tree)

UNIVERSITAS NURDIN HAMZAH - JAMBI 11


Pohon Biner
Definisi
Keterangan Representasi

Pohon biner condong kanan (right


skewed binary tree)

Pohon biner sembarang

UNIVERSITAS NURDIN HAMZAH - JAMBI 12


Pohon Biner
Implementasi Pohon Biner
Implementasi Pohon Biner

• Pada implementasinya pohon biner biasanya menggunakan pointer dan mengalokasikan


simpul di memori. Sebuah simpul pada pohon biner biasanya terdiri dari pointer ke
subpohon kiri, pointer ke subpohon kanan, dan data yang disimpan pada simpul.
• Representasi simpul dengan pointer dapat dilihat pada gambar di bawah ini :

UNIVERSITAS NURDIN HAMZAH - JAMBI 13


Pohon Biner
Definisi
• Perhatikan gambar di bawah ini :

Gambar di sebelah kiri merupakan contoh pohon biner. Jika diimplementasikan sebagai
pohon dengan pointer, maka simpul-simpulnya akan menjadi seperti pada di sebelah kanan.

UNIVERSITAS NURDIN HAMZAH - JAMBI 14


Pohon Biner
Operasi Pada Pohon Biner
Operasi Pada Pohon Biner

Operasi yang dapat dilakukan pada pohon biner antara lain adalah sebagai berikut :
1. Pembuatan Simpul Akar
2. Penambahan(Insert) simpul baru
3. Pembacaan/penelusuran pohon biner

UNIVERSITAS NURDIN HAMZAH - JAMBI 15


Pohon Biner
Operasi Pada Pohon Biner
1. Pembuatan Simpul Akar
Sebelum membuat pohon pertama kali (simpul root),lakukan pemriksaan terlebih
dahulu apakah pohon sudah ada (tree=NIL). Simpul akar hanya bisa dibuat jika pohon
masih dalam keadaan kosong(NIL).

2. Penambahan (Insert) Simpul Baru


Operasi ini digunakan untuk menambah simpul baru pada sebuah pohon. Pada saat
operasi ini dijalankan, maka akan dilakukan pengecekan apakah pohon sudah memiliki
simpul akar. Simpul baru akan ditambahkan jika simpul akar telah terisi.

UNIVERSITAS NURDIN HAMZAH - JAMBI 16


Pohon Biner
Operasi Pada Pohon Biner
3. Pembacaan/Penelusuran Pohon Biner
Operasi ini digunakan untuk melakukan pembacaan/penelusuran pohon biner menggunakan
beberapa cara tertentu, diantaranya adalah :

PreOrder
• Merupakan penelusuran pada pohon biner yang dimulai dari :
1. Penelusuran simpul akar
2. Penelusuran subpohon kiri
3. Penelusuran subpohon kanan
4. Selesai.

UNIVERSITAS NURDIN HAMZAH - JAMBI 17


Pohon Biner
Operasi Pada Pohon Biner
Misalkan terdapat sebuah pohon biner seperti pada gambar di bawah ini :

Maka dengan penelusuran preOrder akan menghasilkan urutan simpul yang ditelusuri
adalah A-B-D-C-E. Penelusuran preOrder dapat diimplementasikan secara rekursif maupun
tidak menggunakan cara rekursif.
UNIVERSITAS NURDIN HAMZAH - JAMBI 18
Pohon Biner
Operasi Pada Pohon Biner
InOrder
• Merupakan penelusuran pada pohon biner yang dimulai dari :
1. Penelusuran subpohon kiri
2. Penelusuran simpul akar
3. Penelusuran subpohon kanan
4. Selesai.

Jika dilakukan penelusuran pada pohon biner di gambar sebelumnya, maka akan menghasilkan
urutan simpul yang ditelusuri adalah D-B-A-C-E. Sama seperti penelusuran preOrder, penelusuran
inOrder juga dapat diimplementasikan secara rekursif maupun tidak menggunakan cara rekursif.

UNIVERSITAS NURDIN HAMZAH - JAMBI 19


Pohon Biner
Operasi Pada Pohon Biner
PostOrder
• Merupakan penelusuran pada pohon biner yang dimulai dari :
1. Penelusuran subpohon kiri
2. Penelusuran subphohn kanan
3. Penelusuran simpul akar
4. Selesai.

Jika dilakukan penelusuran pada pohon biner di gambar sebelumnya, maka akan menghasilkan
urutan simpul yang ditelusuri adalah D-B-E-C-A. Sama seperti penelusuran preOrder dan InOrder,
penelusuran PostOrder juga dapat diimplementasikan secara rekursif maupun tidak menggunakan cara
rekursif.

UNIVERSITAS NURDIN HAMZAH - JAMBI 20


Implementasi Tree
Binary Tree
Implementasi Tree (Binary Tree)
Deklarasi Variabel
program binary_tree;
uses crt;
type
tree = ^simpul;
simpul = Record
info : char;
kiri : tree;
kanan : tree;
end;
var
pohon:tree;
ulang,ulang_posisi:integer;
tambah_simpul_baru,tambah_lagi,posisi_simpul_baru : char;

UNIVERSITAS NURDIN HAMZAH - JAMBI 22


Implementasi Tree (Binary Tree)
Membuat Root
function root(huruf : Char) : tree;
Var temp : tree;
begin
new(temp);
temp^.info := huruf;
temp^.kiri := NIL; temp^.kanan := NIL;
root := temp;
end;
procedure simpul_baru(Var Pohon : tree; huruf,posisi : Char);
begin
if Pohon = NIL Then
Pohon := root(huruf)
else
begin
if posisi='L' then
simpul_baru(Pohon^.kiri,huruf,'L')
else if posisi='R' then
simpul_baru(Pohon^.kanan,huruf,'R')
else
writeln('Karakter', huruf, 'Sudah ada di tree');
end;
end;
UNIVERSITAS NURDIN HAMZAH - JAMBI 23
Implementasi Tree (Binary Tree)
Penelusuran Pohon Biner
procedure preorder(temp : tree);
begin
if temp <> NIL Then
begin
write(temp^.info,' ');
preorder(temp^.kiri);
preorder(temp^.kanan);
end;
end;
procedure inorder(temp : tree);
begin
if temp <> NIL Then
begin
inorder(temp^.kiri);
write(temp^.info,' ');
inorder(temp^.kanan);
end;
end;
procedure postorder(temp : tree);
begin
if temp <> NIL Then
begin
postorder(temp^.kiri); {Kunjungi cabang kiri}
postorder(temp^.kanan); {Kunjungi cabang kanan}
write(temp^.info,' '); {Cetak isi simpul}
end; UNIVERSITAS NURDIN HAMZAH - JAMBI 24
end;
Implementasi Tree (Binary Tree)
Program Utama
begin
clrscr;
ulang:=0;
repeat
if pohon= NIL Then
begin
write('Masukkan Root = ');readln(tambah_simpul_baru);
simpul_baru(pohon,tambah_simpul_baru,'L');
end
else
begin
write('Masukkan Simpul Baru = ');readln(tambah_simpul_baru);
write('Tentukan Posisi Simpul Baru (Left(L) / Right(R)) = ');readln(posisi_simpul_baru);
ulang_posisi:=0;
repeat
if (posisi_simpul_baru='L') THEN ulang_posisi:=1
else if (posisi_simpul_baru='R') THEN ulang_posisi:=1
until ulang_posisi=1;
simpul_baru(pohon,tambah_simpul_baru,posisi_simpul_baru); UNIVERSITAS NURDIN HAMZAH - JAMBI 25
end;
Implementasi Tree (Binary Tree)
Program Utama(2)
write('Apakah Ingin Menambah Simpul Lagi ?(Y/T)'); readln(tambah_lagi);
if tambah_lagi='T' THEN
ulang:=1
else ulang:=0;
until ulang=1;
{Penelusuran Pohon Biner}
writeln('PREORDER:');
preorder(pohon);
writeln;
writeln('INORDER:');
inorder(pohon);
writeln;
writeln('POSTORDER:');
postorder(pohon);
readln;
end.
UNIVERSITAS NURDIN HAMZAH - JAMBI 26

Anda mungkin juga menyukai