Anda di halaman 1dari 34

12: Tree

Struktur Data (TI0133) – Semester Gasal 2021/2022

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Agenda
• Struktur, Karakteristik dan Kegunaan Tree
• Operasi-Operasi pada Tree
• Insert
• Delete
• Traversing: Level order, Pre-order, In-order, Post-order

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Tree

http://www.chesstree.net/

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Tree

By Traced by User:Stannered, original by en:User:Gdr - Traced from


en:Image:Tic-tac-toe-game-tree.png, CC BY-SA 3.0,
https://commons.wikimedia.org/w/index.php?curid=1877696

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Tree

Covid Symptom Severity Using Decision Tree


https://ieeexplore.ieee.org/document/9243246

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
https://chrome.google.com/webstore/detail/css-playground-and-dom-
tr/fbdbnlmganadmogpnpceofkilanfolni
DOM Tree

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Tree
• Struktur data non-linear
• Membentuk hierarkhi / tingkatan
• Merupakan recursive data structure
• Dalam implementasinya, sebagian / seluruhnya tersusun dari struktur data yang
sama dalam bentuk yang lebih kecil
• Contoh: linked list dan tree

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Struktur Tree Root
Sub-tree
• Node dari Node A
• Menyimpan nilai
• Menyimpan informasi node/sub-tree
di bawahnya
• Root
• Node yang paling atas (Node A)
• Sub-tree
• Bagian dari Tree yang
lebih kecil
• Leaf Sub-tree dari
• Node yang tidak punya Node B
sub-tree/node di bawahnya
Node G, H, I, J, F

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Struktur Tree
Internal Node

External node

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Struktur Tree
• Hubungan antara suatu Node dengan Node-Node satu level di bawahnya
sering juga disebut sebagai Parent – Child

Node A adalah Parent dari Node B, C dan D


A
Node B, C dan D adalah Child dari Node A

B C D Node D adalah Parent dari Node E dan F


Node D adalah Child dari Node A

E F Child dari Node D adalah …?

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Root, Inner Node dan Leaf Node

21 Root

32 76 88 Inner/internal Node

44 11 5 Leaf/external Node

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Height dari Tree

Height dari Tree tersebut adalah 4


1
Level 1: 1 Node (A)
2 Level 2: 2 Node (B dan C)
Level 3: 3 Node (D, E, dan F)
3 Level 4: 3 Node (G, H dan I)
4 Ada juga yang memberi nomor
Level 0, 1, 2, … dst

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Depth and Height dari Node

Depth suatu node merupakan jarak


dari Root Node ke node tersebut

Node A merupakan Root Node,


memiliki depth = 0

Depth dari Node F adalah 2, karena


berjarak dua node dari Root Node

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Depth and Height dari Node

Height suatu node merupakan jarak


terjauh dari node tersebut ke Leaf
Node-nya

Node D, G, H dan I adalah leaf node,


sehingga memiliki height = 0

Node F berjarak maksimal 1 node


dari node leaf-nya (Node H dan I),
sehingga height = 1

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Depth Depth and Height dari Node
=0

Depth Depth
=1 =1

Depth Depth Depth


=2 =2 =2

Depth Depth Depth


=3 =3 =3

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Heigh
Depth and Height dari Node
t=3

Heigh Heigh
t=1 t=2

Heigh Heigh Heigh


t=0 t=1 t=1

Heigh Heigh Heigh


t=0 t=0 t=0

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Jenis-Jenis Tree
• General Tree
• Setiap node-nya bisa memiliki child node dalam jumlah berapapun
• Dalam implementasinya biasanya child nodes disimpan dalam List
• Binary Tree
• Setiap node-nya maksimal memiliki dua child nodes
• Biasanya child nodes disimpan dengan nama left node dan right node
• Paling banyak dipakai dalam algoritma, memiliki banyak variasi bentuk
• Binary Search Tree, AVL Tree, B-Tree, T-Tree, Red Black Tree, …

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Implementasi General Tree
Coba gambarkan tree yang
dihasilkan dari kode program
tersebut!

Bisakah anda menampilkan isi


dari tree tersebut secara level
order?
hint: gunakan Queue

Ada library anytree di Python


yang bisa digunakan untuk
menyusun general tree

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Binary Tree
• Bentuk Tree yang lebih banyak digunakan, dan memiliki banyak variasi
• Binary Search Tree, AVL Tree, Red Black Tree, B-Tree, T-Tree, …
• Setiap node maksimal memiliki dua child nodes
• Biasanya dinamakan left node dan right node
• Binary Tree yang lebih spesifik biasanya memiliki aturan pada peletakan
child node, apakah di sebelah kiri atau kanan
• Dari bentuknya, Binary Tree bisa digolongkan menjadi beberapa bentuk
berikut ini:
• Full binary tree, Complete binary tree, Perfect binary tree, Balanced binary tree,
Degenerate/skewed binary tree

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Jenis-Jenis Binary Tree
Full binary tree Complete binary tree
Semua nodes memiliki dua child, Seluruh level terisi oleh node, kecuali
kecuali external (leaf) node pada level terendahnya

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Jenis-Jenis Binary Tree
Perfect binary tree Balanced binary tree
Semua internal nodes memiliki dua Height dari tree adalah Log n,
child, kemudian seluruh leaf node dengan n adalah jumlah nodes di
berada pada level yang sama dalam tree. Selisih tinggi sebelah kiri
dan kanan tidak boleh lebih dari 1

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Jenis-Jenis Binary Tree
Degenerate/Skewed binary tree
Seluruh internal node hanya
memiliki 1 child saja (sama saja
dengan linked list)

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
ADT Tree
• Operasi-Operasi pada Binary Tree
• Insert
• Traversing (Find, Print)
• Delete
• Mode traversing bisa bermacam-macam
• Level Order / Breadth First Traversal : berdasarkan level, mulai dari level 1, 2, dst…
• Depth First Traversal: mulai dari node terdalam terlebih dahulu
• Depth first traversal terdiri dari tiga macam:
• Pre-Order, In-Order dan Post-Order
• Visualisasi bisa dilihat di: https://algorithm-visualizer.org/brute-
force/binary-tree-traversal
Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Pembentukan Binary Tree
• Tentukan root dari tree
• Biasanya node yang pertama
• Jika menambahkan node, gunakan aturan sebagai berikut:
• Jika lebih besar dari parent, masukkan ke sebelah kanan
• Jika lebih kecil atau sama dengan parent, masukkan ke sebelah kiri
• Bentuk ini dinamakan sebagai Binary Search Tree
• Misal dimasukkan secara berurutan:
• 56, 24, 78, 12, 29, 33, 63, 81, 98
• Gambarkan tree yang terbentuk!

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Pembentukan Binary Tree
56, 24, 78, 12, 29, 33, 63, 81, 98
56

24 78

12 29 63 81

33 98

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Traversing Breadth First / Level Order
56
Hasilnya adalah:
56, 24, 78, 12, 29, 63, 81, 33, 98
24 78

12 29 63 81

33 98

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Traversing Pre-Order
Urutannya adalah:
1. Kunjungi root node
56 2. Kunjungi left node
secara rekursif
3. Kunjungi right node
24 78 secara rekursif
Root -> Left -> Right

12 29 63 81 Hasilnya adalah:
56, 24, 12, 29, 33, 78, 63, 81, 98

33 98

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Traversing In-Order
Urutannya adalah:
1. Kunjungi left node
56 secara rekursif
2. Kunjungi root node
3. Kunjungi right node
24 78 secara rekursif
Left-> Root -> Right

12 29 63 81 Hasilnya adalah:
12, 24, 29, 33, 56, 63, 78, 81, 98

33 98

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Traversing Post-Order
Urutannya adalah:
1. Kunjungi left node
56 secara rekursif
2. Kunjungi right node
secara rekursif
24 78 3. Kunjungi root node
Left-> Right -> Root

12 29 63 81 Hasilnya adalah:
12, 33, 29, 24, 63, 98, 81, 78, 56

33 98

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Menghapus Node pada Binary Tree
• Tergantung dari binary tree tersebut
• Apakah ada aturan khusus pembentukan tree?
• Misalnya node lebih kecil atau sama dengan di kiri, sedangkan jika lebih besar di
kanan
• Binary tree sederhana vs Binary tree dengan aturan khusus
• Jika hanya binary tree biasa
• Jika leaf node, hapus langsung
• Jika bukan leaf node, pilih satu node yang berada di paling kanan dari tree untuk
menggantikannya
• Binary Tree dengan aturan khusus
• Akan dibahas pada materi Binary Search Tree

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Binary Tree Biasa
Hapus F => langsung hapus saja,
A karena merupakan leaf node

Hapus B => memiliki child node,


B C maka pilih node paling kanan => I
untuk menggantikan B
D E G H

F I

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Implementasi Binary Tree
Coba gambarkan tree yang
dihasilkan dari kode program
tersebut!

Bisakah anda menampilkan isi


dari tree tersebut secara level
order?
hint: gunakan Queue

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Pertanyaan?

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana
Minggu Depan
13 – Binary Search Tree

Struktur Data | Yuan Lukito, S.Kom., M.Cs © 2021 | Prodi Informatika, Universitas Kristen Duta Wacana

Anda mungkin juga menyukai