TREE
DISUSUN OLEH :
FAKULTAS TEKNIK
TAHUN 2022
1. Pendahuluan
1. Latar Belakang
Tree adalah sebuah graf yg tidak berarah & terhubung dan nir
mengandung sirkuit. Konsep Tree adalah keliru satu konsep graf & poly
dipakai pada bidang ilmu personal komputer & bidang lain yg menyelidiki
pohon menjadi objek matematika. Bentuk tree berakar yg spesifik &
gampang dikelola yaitu binary tree atau pohon binar.
2. Rumusan Masalah
1. Apa itu Tree?
3. Tujuan Penulisan
1. Mampu memahami definisi Tree, Traversal, Binary Tree dan
Spanning
2. Pembahasan
1. Tree
A. Definisi Tree
Tree asal berdasarkan kata “tree” pada bahasa inggris ini diartikan
menjadi Pohon. Dalam susunan data, konsep dasar Tree seperti
misalnya pohon yg adalah sekumpulan node yg saling terhubung antara
satu sama lain ang membangun misalnya struktur berdasarkan sebuah
pohon. Tree pula adalah graf tak-berarah yg terhubung tanpa sirkuit
sederhana.
Pohon adalah graf terhubung yang tidak memiliki arah dan juga
tidak mengandung sirkuit. Pohon adalah graf tanpa arah G & memiliki n
node yang harus diselesaikan :
Tree atau pohon adalah struktur data yg nir linear yg dipakai buat
mempresentasikan data yg bersifat hirarki antara elemen-elemennya.
Definisi tree yaitu formasi elemen yg keliru satu elemennya dianggap
root (akar) & elemen yg lain dianggap simpul ( node) yg terpecah
sebagai sejumlah formasi yg nir saling bekerjasama satu sama lain yg
dianggap sub-tree atau cabang
Gambar 1.2 Ilustrasi Tree
1. Pohon (tree)
1. G adalah pohon.
3. Pohon m-ary
4. Pohon keputusan
5. Graf
- Adjacency List
- Adjacency Matrix
class Node(object):
def __init__(self,data):
self.data = data
self.adjacents = []
self.visited = False
class DepthFirstSearch(object):
stack = []
stack.append(node)
node.visited = True
print(node.data)
while stack:
currentNode = stack.pop()
if adjacent.visited is False:
self.dfs(adjacent)
queue = []
queue.append(node)
node.visited = True
print(node.data)
while queue:
currentNode = queue.pop(0)
if adjacent.visited is False:
queue.append(adjacent)
adjacent.visited = True
print(adjacent.data)
Graf adalah kumpulan node dan edge. Grafik G = (N, E), di di
mana N adalah himpunan node yang tidak kosong dan E adalah
himpunan sisi yang menghubungkan sepasang node.
V={1,2,3,4}
E={(1,2),(1,3),(2,3),(2,4),(3,4)}
V={ 1,2,3,4 }
E={(1,2),(2,3),(1,3),(1,3),(2,4),(3,4),(3,4)} =
{e1,e2,e3,e4,e5,e6,e7}
V={ 1,2,3,4 }
E={(1,2),(2,3),(1,3),(1,3),(2,4),(3,4),(3,4),(3,3)} =
{e1,e2,e3,e4,e5,e6,e7,e8}
Binary Tree adalah himpunan simpul yang terdiri dari dua subpohon
(berpisah), satu subpohon di sebelah kiri dan satu subpohon di sebelah
kanan. Urutan keluar maksimum untuk setiap node di pohon biner
adalah 2.
1. Strict Binary Tree dengan dua anak atau tanpa anak sama sekali
- Find : Menemukan akar, induk, anak kiri, atau anak kanan dari
sebuah simpul. (Pohon tidak boleh kosong).
- Update : Mengubah konten simpul yang ditunjuk oleh penunjuk
saat ini. (Pohon tidak boleh kosong)
Dengan akar yang dipilih, setiap sudut akan memiliki ayah yang
istimewa, & diatas 2 anak toh, sejauh ini masih ada Batasan informasi
untuk membedakan antara anak kiri atau anak kanan. ketika kita
singkirkan kebutuhan yang tidak terhubung, izinkan berbagai koneksi
ke komponen pada grafik, kita sebut struktur a Hutan.
- Satu sudut.
Contoh :
Gambar 1.11 Contoh Pohon Biner
Sebuah sudut.
Grafik yang terdiri dari dua pohon biner, tambahkan sudut, lalu
tambahkan panah ke akar setiap pohon biner pada sudut baru.
Binary tree bisa dibangun berdasarkan bahasa pemrograman
primitif pada beberapa cara. Gunakan bahasa catatan & surat
keterangan. Binary tree umumnya dibangun menggunakan merogoh
struktur simpul tree yg berisi beberapa data & surat keterangan ke
simpul anak kiri & kanan.
Binary tree juga dapat disimpan dalam array sebagai struktur data
implisit, yang tidak memakan tempat jika pohonnya adalah pohon biner
penuh. Dalam pengaturan ketat ini, bila sebuah simpul mempunyai
indeks i, anak-anaknya bisa ditemukan dalam indeks 2i+1 & 2i+2,
meskipun induknya (bila ada) berada dalam level indeks ((i-1)/2 )
(menggunakan perkiraan akar mempunyai indeks kosong). Pendekatan
ini menerima manfaat berdasarkan poly penyimpanan kompak &
mempunyai surat keterangan lokal yg lebih baik, terutama selama
preorder traversal.
Tentu saja, perlu mengisi nilai untuk lebih kecil dan lebih
besar. Beberapa saat refleksi harus memungkinkan Anda untuk
mengetahui satu metode untuk melakukannya. Inilah susunan
lengkapnya, untuk referensi:
const struct bin entri pohon biner[16] = {
{100, 15, 15}, {101, 0, 2}, {102, 15, 15}, {103, 1, 5}, {104, 15,
15}, {105, 4, 6}, {106, 15, 15}, {107, 3, 11}, {108, 15, 15}, {109, 8,
10}, {110, 15, 15}, {111, 9, 13}, {112, 15, 15}, {113, 12, 14}, {114,
15, 15}, {0, 0, 0},
};
F. Balanced Tree
Sebuah pohon biner seimbang adalah satu set node yang
memiliki node yang seimbang atau satu perbedaan. Dengan Biner
Seimbang Cari Pohon, kita bisa membangun pohon menggunakan
ketinggian minimum. Untuk menentukan ketinggian, kita dapat
menggunakan rumus:
O(log n)
Gambar . Balanced Binary Tree
- AVL Tree
Height :
Faktor Keseimbangan:
selisih atas antara anak kiri dan kanan, jika tidak ada anak, dianggap 0.
Operasi Pohon AVL: Penyisipan
Ada 4 hal yang umumnya terjadi saat operasi insert dilakukan, yaitu:
Single Rotation
Double Rotation
Node fifty five nir seimbang, lantaran anak kiri zero & anak kanan dua,
selisih dua. diseimbangkan menggunakan unmarried rotation (left-left)
lantaran fifty five ke sixty five kiri & sixty five ke 70 kiri akan tetapi, node 50
sebagai nir seimbang, pada subtree kiri four & subtree kanan dua
- setiap route memiliki jumlah simpul hitam sama dengan route lainnya
aturan insertion :
Apa yang harus dilakukan jika simpul merah memiliki simpul balita merah?
Memeriksa paman/paman berdasarkan simpul merah (anak)
a. jika paman berwarna merah, maka ubah warnanya menjadi jelas &
paman sebagai hitam, & agung membedakan merah.
b. jika M hitam & C merah, maka M diganti C & C berubah warna menjadi
hitam
C = N,
P = parent N,
S = sibling N,
Sl = left child S,
Sr = right child S
perhatikan siblingnya :
1. apabila S merah, ubah rona N & P (tukar rona), selanjutnya rotate pada
P
3. jika S hitam & Sl atau Sr salah satunya adalah merah maka lakukan
single/double rotation
2-3 Tree
dua-tiga tree adalah sebuah struktur informasi dimana setiap inner
nodenya (bukan daun) merupakan 2-node atau 3-node & seluruh daunnya
berada pada degree yg sama
Operasi looking dalam 2-three tree sama misalnya dalam BST, sebagai
akibatnya hanya perlu membandingkan information yg dicari
menggunakan information yg terdapat dalam node. Misalkan K adalah
simpul dicari & N adalah simpul yang akan dibandingkan menggunakan
pohon, maka jika K lebih kecil dari N, operasi pencarian berlanjut ke
subpohon kiri N tetapi jika K lebih besar dari N, maka operasi mencari
terus ke subpohon kanan N. Ini berlanjut sampai K = N, atau K ditemukan.
2-3 Tree Operations : Insertion
Aturan insertion :
2. kunci akan ditempatkan pada daun. a) jika daun adalah 2-simpul, maka
kunci dimasukkan ke dalam daun, sehingga daun menjadi tiga simpul
sebagai hasilnya. b) jika daunnya adalah tiga simpul, maka ambil nilai
tengah menurut A, B, & kunci (A adalah informasi-1 pada daun, & B
adalah informasi-2 pada daun) & Dorong nilai tengah ke induknya
3. jika pada saat aturan kedua induknya bukan 2-simpul, tetapi tiga-simpul,
tentukan pergi nilai tengah lalu tekan pergi ke orang tua
4. apabila dalam saat anggaran ke 2 & three nir mampu dilakukan karena
determine hingga ke rootnya merupakan three-node, maka tentukan
pulang median, lalu median tadi akan dibentuk root baru.
Aturan deletion :
3. Ancestor
4. Descendant
5. Parent
6. Child
7. Sibling
Sebuah simpul yang memiliki ayah yang sama dengan
sebuah simpul. (Contoh: E dan F bersaudara)
8. Subtree
9. Size
10. Height
H. Operasi Tree
1. Create()
2. Clear()
3. Empty()
4. Insert()
5. Traverse()
6. PreOrder
7. InOrder
8. PostOrder
Create()
Fungsi ini yaitu suatu fungsi yang menciptakan tree kosong baru,
yang biasanya berisi inisialisasi variabel pohon, nilainya Null
ditulis seperti ini:
Pohon = NULL;
Clear()
Empty()
else return 0;
}
Insert
Transverse ()
1. PreOrder
2. InOrder
3. PostOrder
PreOrder
Melintasi proses yang melakukan tahap cetak simpul
dikunjungi, kunjungi simpul kiri, kunjungi simpul kanan. Mengikuti
Berikut ilustrasi PreOrder dan Algoritma pada TraverseFunction:
InOrder
D. Rooted Tree
Pohon berakar merupakan pohon pada mana simpul sudah
didefinisikan menjadi akar & setiap tepi memilih menjauh menurut
akar. Pohon berakar merupakan pohon yang simpulnya dipercaya
menjadi akar & tepinya diorientasikan sebagai akibatnya sebagai graf
berarah.
Level suatu simpul adalah jumlah simpul dalam lintasan dari akar
ke simpul. Ini hanya satu lebih dari kedalaman simpul. Tingkat akar
adalah 1.
Anak dari simpul v1 adalah setiap simpul v2 yang terhubung
dengannya sedemikian rupa sehingga d(v2)=d(v1)+1, di mana d(v)
menyatakan kedalaman simpul v. v1 disebut induk dari v2. Biasanya,
dalam diagram, kita menjaga simpul induk di atas simpul anaknya.
1. Jika arah sisi pada T diabaikan, hasil graf tak berarah adalah
pohon.
Lintasan (Path)
Subpohon (Subtree)
Derajat (Degree)
Daun (Leaf)
2. Lintasan (path)
Dalam suatu graph terdapat istilah graph, salah satunya
adalah lintasan, lintasan adalah sisi atau sisi dari suatu graph
yang menghubungkan himpunan titik-titik pada graph tersebut,
lintasan dari a ke m pada suatu graf adalah a-d-g-km.
3. Daun (leaf)
Maka graf T juga mempunyai simpul yaitu Disebut daun,
suatu simpul disebut daun kalau derajat masuknya = 1 dan tidak
ada derajat keluarnya, maka simpul tersebut adalah daun dalam
graf itu (Wardana, 2019: 3).
4. Upa Pohon
Gambar Upa-pohon
5. Derajat (degree)
Derajat suatu graph adalah total derajat simpul-simpulnya.
Derajat suatu simpul adalah jumlah titik yang terhubung ke simpul
tersebut. Misalnya, derajat simpul a atau simpul akar dari graf
pohon berakar adalah d(a) = 3, dan derajat itu sendiri dibagi
menjadi dua, derajat masuk dan derajat keluar.
Gambar Aras
Ciri selanjutnya dari graf pohon berakar urutan-T adalah
memiliki hierarki atau hierarki, yang dimulai dari akar pada level 0
dan menuju ke simpul terendah, daun pada level ke-n. Jika
terdapat simpul yang sama derajatnya, maka kedua simpul
tersebut disebut bersaudara (Anak).
Contoh struktur data yang terdiri dari root dan subtree dalam
urutan hierarkis.
Mencari item dalam daftar adalah salah satu tugas terpenting yang
muncul dalam ilmu komputer. Tujuan utama kami adalah menerapkan
algoritme penelusuran yang menemukan item secara efisien saat
barang benar-benar dipesan. Hal ini dapat dicapai melalui
penggunaan pohon pencarian biner, yang merupakan pohon biner di
mana setiap anak dari suatu simpul ditetapkan sebagai anak kanan
atau kiri, simpul memiliki lebih dari satu anak kanan atau anak kiri, dan
setiap simpul diberi label dengan kunci, yang merupakan salah satu
item. Selanjutnya, simpul diberikan kunci sehingga kunci simpul
adalah keduanya lebih besar dari kunci semua simpul di subpohon
kirinya dan lebih kecil dari kunci semua simpul di subpohon kanannya.
Contoh 1 :
Bentuk pohon pencarian biner untuk kata-kata matematika, fisika,
geografi, zoologi, meteorologi, geologi, psikologi, dan kimia
(menggunakan urutan abjad).
Solusi :
v := root of T
else
if root of T = null then add a vertex v to the tree and label it with x
else if v is null or label(v) ≠ x then label new vertex with x and let v be
this new vertex
return v {v = location of x}
Contoh 2 :
Contoh 3 :
Misalkan ada tujuh koin, semuanya dengan berat yang sama, dan
koin palsu yang beratnya kurang dari yang lain. Berapa
penimbangan yang diperlukan dengan menggunakan timbangan
untuk menentukan mana dari delapan uang logam yang palsu?
Berikan algoritma untuk menemukan koin palsu ini.
Teorema 1 :
2. Traversal
A. Definisi Traversal
Traversal adalah sebuah proses melakukan kunjungan pada
setiap node pada suatu binary tree tyaitu paripurna satu kali. Dengan
melakukan kunjungan secara lengkap, maka akan diperoleh urutan
berita secara linier yang tersimpan dalam sebuah binary tree.
Cara-cara Penelusuran
- Penelusuran preorder:
Pertama mengunjungi root berdasarkan tree (subtree) tadi
lalu secara rekursif penelusuran preorder node-node subtree kiri
& secara rekursif penelusuran preorder node-node subtree
kanan.
- Penelusuran postorder:
Pertama secara rekursif penelusuran postorder node-node
subtree kiri, lalu secara rekursif penelusuran postorder node-node
subtree kanan, & mengunjungi root berdasarkan tree (subtree)
tadi.
- Penelusuran inorder:
Pertama secara rekursif penelusuran preorder node-node
subtree kiri lalu mengunjungi root berdasarkan tree (subtree) tadi
& secara rekursif penelusuran preorder node-node subtree
kanan.
C. Metode Traversal
Ada 3 metode pada traversal, seperti berikut :
1. INORDER
Inorder Traversal
1. Cetak semua data secara rekursif di subpohon kiri
2. Cetak data di root
3. Cetak semua data secara rekursif di subpohon kanan pesan terlebih
dahulu
Hasil :
5 7 8 10 12 15 16 18
Implementasi Bahasa C :
2. PREORDER
Preorder Traversal
1. Cetak data di root
2. Cetak semua data secara rekursif di subpohon kiri
3. Cetak semua data secara rekursif di subpohon kanan pesanan pos
Hasil :
10 8 5 7 16 12 15 18
Implementasi Bahasa C :
PREORDER ( BSTNodePTR pointer)
if pointer != NULL
VISIT (pointer)
PREORDER( LChild(pointer))
PREORDER( Rchild(pointer))
3. POSTORDER
Postorder Traversal
1. Cetak semua data secara rekursif di subpohon kiri
2. Cetak semua data secara rekursif di subpohon kanan
3. Cetak data di root
Hasil :
7 5 8 15 12 18 16 10
Implementasi Bahasa C :
POSTORDER ( BSTNodePTR pointer)
if pointer != NULL
POSTORDER( LChild(pointer))
POSTORDER( Rchild(pointer))
VISIT (pointer)
D. Algoritma Binary Tree Traversal
Konsep algoritma yang digunakan adalah :
Kurangi dan taklukkan: pendekatan desain algoritmik dengan
mengurangi masalah menjadi beberapa submasalah yang lebih kecil,
tetapi hanya menangani Hanya bekerja pada submasalah.
Dibandingkan dengan membagi dan menaklukkan yang menangani
semua submasalah masalah dan menggabungkan semua solusi
untuk setiap submasalah.
3. Traversal postorder
Yang dilaksanakan dengan jalan melakukan kunjungan ke
subtree kiri, kemudian ke subtree kanan, dan selanjutnya mencetak
isi titik yang dikunjungi. Adapun algoritma umum traversal inorder
adalah sebagai berikut:
- Jika tree kosong, maka keluar.
- Traverse subtree kiri secara postorder.
- Lintasi subpohon di sebelah kanan menggunakan metode
pasca-pemesanan.
- Proses simpul akar.
Class Test BinaryTree untuk menguji class Binary Tree yang sudah
dibuat.
Gambar 2. Class Diagram dari praktikum Binary Tree
3. Spanning
A. Definisi Spanning
Spanning tree terdiri berdasarkan seluruh node & beberapa
edge pada graf, sebagai akibatnya seluruh node terhubung satu
sama lain. Pohon merentang merupakan graf terhubung yg
diperoleh menggunakan memutus sirkuit pada graf tersebut.
Bobot spanning tree adalah jumlah dari bobot edge, dan
spanning tree dari graf G adalah spanning tree minimum, yaitu
spanning tree dengan total bobot edge terkecil di graf G.
= 2 + 4 + 4 + 5 +5
= 20
1. Prim’s
Langkah-langkahnya yaitu :
Mengambil edge (T) dengan bobot terkecil pada tree.
Mengambil edge atau tepi yang bersisian dengan
node/simpul di T dengan bobot minimum yang
menambah node/simpul baru yang tidak
membentuksirkuit pada Tree.
Dan ulangi langkah 2 diatas sebanyak n-2 kali.
Gambar 3.3 Langkah – langkah minimum spanning tree dengan prim’s
2. Kruskal
Langkah-langkahnya yaitu :
Graf pada awalnya hanya terdiri dari nodes saja.
Tambahkan edges/tepi berdasarkan bobot yang
paling rendah dan yang ditambahkan tidak
membentuk sirkuit.
Dan ulangi langkah kedua sebanyak n-1 kali.
Gambar 3.4 Langkah – Langkah minimum spanning tree dengan
kruskal
a. Langkah pertama, cari nilai cost yang terkecil. Dengan cost yang
kecil maka biaya yang dibutuhkan lebih murah. Karena cost
diatas yang terkecil nilainya 2 maka harus didahulukan terlebih
dahulu.
e. Langkah kelima, hasil akhir dari spanning tree sudah terlihat yaitu
tinggal menghubungkan edge FE. Karena nilai costnya yang
paling murah dibandingkan memakai nilai cost yang lainnya.
STP akan memblokir satu atau lebih port menjadi hasil yang
nantinya hanya akan ada satu jalur digunakan untuk mengirimkan
data, sedangkan yang lainnya akan menjadi jalur cadangan.
spanning tree
Dari gambar di atas, terlihat bahwa Switch1 adalah
Jembatan Root karena semua port dalam keadaan aktif (berwarna
hijau), sedangkan Switch0 adalah Non-Root Bridge karena pada
switch0 ada satu port yang dalam status pemblokiran (berwarna
oranye).
Port yang diblokir ini akan menjadi jalur cadangan. Jadi, jika
salah satu port yang dalam di atas down, maka tautan dalam di
bawahnya akan digunakan sebagai jalur pengganti pengiriman
data.
Prioritas
Pemilihan Root Bridge dari prioritas yang dimiliki oleh setiap
saklar. Sakelar yang memiliki nilai prioritas terbanyak rendah akan
menjadi Root Bridge. jika nilai prioritas dari beberapa sakelar
sama, maka pemilihan Jembatan Akar akan menjadi dilihat dari
nilai MAC Address terendah. Sakelar yang memiliki nilai MAC.
3. Penutup
1. Kesimpulan
Tree merupakan sebuah struktur linier, umumnya dipakai
buat mendeskripsikan interaksi yg bersifat hirarkis antara elemen-
elemen yg ada. Ada beberapa kata pada tree ini, yg mana masing-
masing kata memiliki arti pada kaitannya menggunakan hirarki antar
elemen pada tree tadi, misalnya sibling, descendant dsb.
2. Pohon Dinamis
2. Data yang lebih kecil berdasarkan node root akan masuk &
menempati simpul kiri berdasarkan simpul Root
Preorder Traversal
Inorder Traversal
Postorder Traversal
- Pilih port yang ditunjuk & port yang tidak ditunjuk untuk
setiap segmen.
Port yang ditunjuk digunakan untuk meneruskan lalu lintas.
Dengan kondisi dalam hal ini saklar yang bertindak sebagai root
bridge adalah saklar yang bertindak sebagai pelabuhan yang
ditunjuk. Sementara port lainnya akan seperti non port yang ditunjuk
& akan diblokir. Padahal port di block & nir dapat mengirim lalu
lintas, port itu masih bisa mendapatkan BDPU.
Daftar Pustaka
Abidin, T.F. Struktur data dan algoritma binary search tree. 1-30.
https://docplayer.info/39607009-Binary-search-tree-bst.html
[diakses pada 13 Mei 2022].
https://ocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-
Data-Wayan-Pertemuan-13-14.pdf