Handout No: 10
[Handout berikutnya, sebelumnya, atau kembali ke halaman utama]
Struktur Data Hirarkis: Terminologi
10 Maret 1999
Goal: Konsep & aplikasi Tree, terminologi dan representasi sikuensial
Motivasi
Tree merupakan salah satu struktur data yang paling penting, karena:
-
banyak aplikasi menggunakan informasi dan data yang secara alami memiliki
struktur hirarkis
-
berguna dalam membantu memecahkan banyak masalah algoritmis
Tree Statis vs. Dinamis
-
Dalam sejumlah aplikasi data yang tersimpan serta struktur hirarkisnya
tidak akan berubah sejak mulai proses, hingga proses selesai. Untuk aplikasi
tersebut digunakan struktur tree yang statis.
-
Untuk aplikasi lain data dan informasi yang digunakan berubah-ubah, mungkin
karena munculnya data baru, dihilangkannya suatu data tersimpan atau perubahan
harga data tersimpan yang umumnya mengakibatkan perubahan struktur hirarkis
tersebut. Untuk itu digunakan struktur tree dinamis.
Terminologi
-
Tree (atau pohon)
sejumlah node yang berhubungan secara hirarkis dimana suatu node pada
suatu hirarki merupakan cabang dari node dengan hirarki yang lebih tinggi
dan juga memiliki cabang ke beberapa node lainnya dengan hirarki yang lebih
rendah.
-
Root (atau akar)
Node dengan hirarki tertinggi dinamakan root.
-
leaf (atau daun)
node yang tidak memiliki cabang.
-
Internal node (atau node dalam)
node yang bukan merupakan leave.
-
edge (atau sisi atau cabang)
menyatakan hubungan hirarkis antara kedua node yang terhubungkan, biasanya
digambarkan berarah (berupa panah) untuk menunjukkan node asal edge lebih
tinggi dari node tujuan dari edge.
-
Level (atau tingkat) suatu node
bilangan yang menunjukan hirarki daroi suatu node, root memiliki level
0, node cabang dari root memiliki level 1, node cabang berikutnya dari
node level 1 memiliki level 2, dan seterusnya.
-
Height (atau tinggi) suatu tree
sama dengan level dengan angka terbesar (hirarki terendah) suatu node
yang ada dalam tree atau bisa juga didefinisikan sebagai jumlah sisi terbanyak
dari root hingga suatu leaf yang ada di tree.
-
Depth (atau kedalaman) suatu node
Jumlah sisi dari root hingga node ybs.
-
Subtree (atau subpohon)
sebagian dari tree mulai dari suatu node N melingkupi node-node yang
berada dibawah hirarkinya sehingga dapat dipandang sebagai suatu tree juga
yang mana N sebagai root dari tree ini.
-
Tree kosong
Suatu tree yang tidak memiliki suatu node pun.
-
Tree dengan urutan
letak geometris node-node yang merupakan cabang yang sama dari suatu
node adalah penting; biasanya urutan dari kiri ke kanan.
Terminologi akibat hubungan “kekeluargaan” antar node.
-
anak
node cabang dari suatu node
-
ayah
node mana bahwa suatu node menjadi cabangnya
-
sibling
node-node yang berayah sama; sibling kiri/kanan adalah node yang terletak
tepat disebelah kirinya/kanannya
-
descendant
seluruh node berada di bawah hirarki suatu node
-
ancestor
node-node yang mana saja sehingga suatu node tertentu menjadi descendant
mereka
Terminologi akibat hubungan geometris antar node:
-
anak ke i
anak suatu node, pada urutan dari kiri ke kanan, dengan nomor urutan
ke i
-
anak kiri, anak tengah, kanan
pada suatu hubungan sibling dengan jumlah node 3 maka anak pertama
adalah anak kiri, anak kedua adalah anak tengah, dan anak ke tiga adalah
anak kanan.
-
node paling atas root.
Binary Tree
Secara intuitif didefinisikan binary tree adalah
-
suatu kelas dari tree yang memiliki sifat: setiap node hanya dapat bercabang
satu, atau dua atau tidak memiliki cabang.
-
Definisi rekursif dari Binary Tree:
suatu binary tree adalah tree kosong atau suatu node yang hanya memiliki
subtree kiri dan subtree kanan yang merupakan binary tree.
Subkelas-subkelas binary tree:
-
Full Binary Tree
Subkelas binary tree di mana setiap internal node tepat memiliki dua
cabang.
-
Perfect Binary Tree
subkelas full binary tree yang mana semua node leaf berada pada level
yang sama.
-
Complete Binary Tree
Suatu binary tree yang memiliki sifat
-
node-node leafnya hanya berada pada satu level terendah terletak merapat
ke sebelah kiri atau
-
node-node leafnya berada di dua level terendah dengan bagian tree hingga
level sebelum terendah membentuk perfect binary tree.
Secara rekursif, bisa juga didefinikan bahwa CBT suatu binary tree yang
memiliki kemungkinan:
-
jika tingginya 0 adalah adalah binary tree node tunggal.
-
jika tinginya 1 adalah binary binary tree dengan anak kiri dan anak kanan
atau binary tree hanya dengan anak kiri.
-
jika tingginya h, adalah suatu perfect binary tree atau suatu binary tree
dengan root memiliki:
-
subtree kiri dari root merupakan perfect binary tree dengan tinggi
h-1 dan subtree kanan merupakan complete binary tree dengan tinggi h-1,
atau
-
subtree kiri dari root merupakan complete binary tree dengan tinggi h-1
dan subtree kanan merupakan perfect binary tree dengan tinggi h-2.
-
Extended binary tree
Binary tree dengan penggambaran tree-tree kosong dengan legend node
yang lain.
Representasi Sikuensial untuk Binary Tree
Kelas-kelas seperti complete atau perfect binary tree dapat direpresentasikan
dengan suatu fixed array dengan panjang sesuai dengan jumlah node maksimum
yang digunakan. Penyusunan node-node dalam array dilakukan sedemikian rupa
sehingga hubungan-hubungan hirarkis antar node masih dengan mudah dapat
dihitung dari indeks-indeks sel array yang ditempatinya. Atau sebaliknya,
dua node yang memiliki relasi tertentu menempati sel-sel pada array dengan
indeks-indeks yang bersesuaian dengan suatu fungsi tertentu. Sbb.:
-
Node-node mulai dari root ke leaf level, demi level dari kiri kekanan diberi
bernomor, misalnya mulai dari 0, 1, 2, 3, dan seterusnya hingga node leaf
pada level terendah dan pada posisi terkanan.
-
Cara penomoran lain adalah mulai dari 1, 2, dst. dengan mengkosongkan elemen
pertama array seperti pada buku teks.) Penomoran ini adalah angka-angka
indeks dari sel dalam array yang akan ditempati node-node ybs. dari tree.
Dengan cara penomoran itu maka terdapat hubungan-hubungan:
-
root
berada di 0
-
P dengan ayah P
jika node P berada di I maka ayahnya akan berada di floor((I-1)/2)
-
P dengan anak kiri/kanan P
Jika node P berada di I maka anak kirinya akan berada di (I*2+1)
dan anak kanan berada di (I*2+2)
-
node-node level ke L
menempati sebanyak 2L sel mulai sel ke (2L -
1), (2L), (2L + 1), . . hingga.sek ke (2L
+ 2L - 2) sibling node bernomor ganjil memiliki siblingnya bernomor
genap sebelumnya (di sebelah kirinya), dansebaliknya yang bernomor genap
memiliki sibling node bernomor ganjil sesudahnya (disebelah kanannya).
Pertanyaan
-
Berapakah tinggi dari dari suatu complete binary tree dengan jumlah node
adalah n? Jawab: floor(log2 n)
-
Berapakah indeks dari node leaf pertama (indeks paling kecil dari leaf)
yang ada pada complete binary tree dengan jumlah node n (indeks mulai dari
0, 1, . . . )? Jawab: floor(n/2)
-
Bagaimanakah hubungan-hubungan di atas apabila pengisian array mulai dari
elemen ke satu (bukan ke nol sebagaimana di atas)?
Contoh heaptree di dalam pengurutan Heapsort yaitu suatu pengurutan
berbasis priority queue.
Handout berikutnya, atau
sebelumnya,
atau kembali ke halaman utama