DAN
STRUKTUR DATA
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 :
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
D K
B F J L
A C E G I
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
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
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 + /
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???