Anda di halaman 1dari 50

ALGORITMA

DAN
STRUKTUR DATA

Binary Tree

Tri Afirianto, S.T., M.T. | tri.afirianto@ub.ac.id


FILKOM | UB
Binary Tree (Pohon Biner)
• Pada sebuah pohon biner, tiap node memiliki tepat 2 sub-tree
(memiliki maksimal 2 cabang/degree)
Contoh Binary Tree

S T

X Y U V

Z W
Contoh Binary Tree
• Representasi ekspresi arithmatik
Latihan
• Buatlah Binary tree dari ekspresi aritmatik berikut :
(a + b) * (c – d) / (e + f)
Akses Elemen
• Posisi node dapat ditentukan berdasarkan rumus berikut :

• Asumsi root dimulai dari index 0 :


• Anak kiri dari node i berada pada indeks : 2*i + 1
• Anak kanan dari node i berada pada indeks : 2*i + 2
• Asumsi root dimulai dari index 1 :
• Anak kiri dari node i berada pada indeks : 2*i
• Anak kanan dari node i berada pada indeks : 2*i + 1
Contoh

D K

B F J L

A C E G I
Representasi Binary Tree
Representasi Binary Tree
• Binary tree dapat direpresentasikan dengan menggunakan array
maupun linked list
Representasi Tree
• Representasi tree menggunakan array (asumsi root pada index 0) :
H D K B F J L A C E G I
0 1 2 3 4 5 6 7 8 9 10 11

• Representasi tree menggunakan array (asumsi root pada index 1):


H D K B F J L A C E G I
0 1 2 3 4 5 6 7 8 9 10 11 12
Linked Representation
root H

D K

B F J L

A C E G I

leftChild element rightChild


Latihan
• Representasikan dengan ilustrasi array dan linked list!

1
a

2 3
b c

4 5 6 7
d e f g
8 9 10
h i j
Array Representation
1
a

2 3
b c

4 5 6 7
d e f g
8 9 10
h i j

tree[] a b c d e f g h i j
0
0 5 5 10 10
Operasi pada Binary Tree
1. Deklarasi
2. Inisialisasi
3. Cek Kosong
4. Penambahan
5. Pengaksesan
6. Jumlah Node
7. Tampil Parent
8. Tampil Anak Kanan/Kiri
9. Traversal (PreOrder, InOrder, PostOrder, LevelOrder)
(1) Deklarasi
• Proses yang harus dilakukan pertama kali adalah
deklarasi/menyiapkan tempat
• Langkah yang harus dilakukan adalah
• Deklarasi class
• Deklarasi struktur data
Deklarasi dan Kontruktor Class Node
Deklarasi dan Konstruktor Class BinaryTree
(2) Inisialisasi
• Proses inisialisasi dilakukan dengan memberikan nilai awal pada
variabel root dengan nilai null.
• Pada bahasa pemrograman Java, nilai default dari object adalah null,
sehingga tanpa perlu dilakukan inisialisasi, nilai dari root adalah null.
(3) Cek Kosong
• Operasi yang digunakan untuk mengecek kondisi tree dalam keadaan
kosong
• Operasi ini harus dapat mengembalikan nilai true jika tree kosong dan
false jika sebaliknya
• dapat menggunakan pengecekan root jika nilainya null berarti tree kosong
Cek Kosong suatu BinaryTree
(4) Penambahan
• Karena sifat dari binary tree adalah memiliki maksimal 2 cabang (kiri
dan kanan), maka penambahan dapat dilakukan berdasarkan node
parent-nya
• Penambahan node baru salah satunya dapat dilakukan dengan
menggunakan constructor node
• Membuat node child terlebih dahulu
• Membuat node parent dengan mengisi node leftChild maupun node
rightChild
• Penambahan node baru juga dapat dilakukan dengan pencarian node
parent terlebih dahulu yang dilakukan secara rekursif dimulai dari
node root
Penambahan Node Baru pada Constructor
(5) Pengaksesan
• Digunakan untuk menampilkan seluruh node dari binary tree
• Dilakukan secara rekursif dimulai dari node root
Pengaksesan Seluruh Node pada Binary Tree
Jenis Binary Tree
Full Binary Tree
• Tiap subtree memiliki panjang path yang sama
• Disebut juga maximum binary tree
Complete Binary Tree
• Seluruh node sebelah kiri terisi seluruhnya
• Node sebelah kanan pada level n-1 ada yang kosong

D K

B F J L

A C E G I
Incomplete Binary Tree
Skewed Binary Tree
• Binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu
anak
• Disebut juga minimum binary tree

Right Skewed Left Skewed


Binary Tree Traversal
Definisi
• Penelusuran seluruh node pada binary tree
• Metode :
• Preorder
• Inorder
• Postorder
• Level order
PreOrder Traversal
• Cetak data pada root
• Secara rekursif mencetak seluruh data pada subpohon kiri
• Secara rekursif mencetak seluruh data pada subpohon kanan
Preorder Example (visit = print)

b c

a b c
Preorder Example (visit = print)
a

b c
f
d e
g h i j

a b d g h e i c f j
Preorder Of Expression Tree
/

* +

e f
+ -

a b c d

/ * + a b - c d + e f

Gives prefix form of expression!


InOrder Traversal
• Secara rekursif mencetak seluruh data pada subpohon kiri
• Cetak data pada root
• Secara rekursif mencetak seluruh data pada subpohon kanan
Inorder Example (visit = print)

b c

b a c
Inorder Example (visit = print)
a

b c
f
d e
g h i j

g d h b e i a f j c
Postorder Traversal
• Secara rekursif mencetak seluruh data pada subpohon kiri
• Secara rekursif mencetak seluruh data pada subpohon kanan
• Cetak data pada root
Postorder Example (visit = print)

b c

b c a
Postorder Example (visit = print)
a

b c
f
d e
g h i j

g h d i e b j f c a
Postorder Of Expression Tree
/

* +

e f
+ -

a b c d

a b + c d - * e f + /

Gives postfix form of expression!


Level Order
• Secara rekursif mencetak data mulai dari level tertinggi
Level-Order Example (visit = print)
a

b c
f
d e
g h i j

a b c d e f g h i j
Latihan
• Telusuri pohon biner berikut dengan menggunakan metode pre, in,
post, dan level traversal
Latihan 1

3 7

5 8 9

10
4 6

11 12
Latihan 2

15
8 20

2 11 27

6 10 12 22 30

3 7 14
PERTANYAAN???
PERTANYAAN???

Anda mungkin juga menyukai