Anda di halaman 1dari 12

Rendi Hartadi

HEAP TREE & (2006533383)


Ananda Rizky Ardha Saputra

BALANCED TREE (2006524050)


Muhammad Majid Rafi Musyaffa
(2006521572)
HEAP TREE
Heap tree adalah sebuah binary tree
yang nilai dari setiap node parentnya
lebih besar atau lebih kecil dari nilai
setiap node childnya. Heap tree bisa
berupa dua tipe, yaitu max-heap tree dan
min-heap tree.
Max-heap tree adalah heap tree yang
setiap nilai dari node parentnya lebih
besar dari setiap nilai node childnya.
Sedangkan min-heap tree adalah heap
tree yang setiap nilai dari node parentnya
lebih kecil dari setiap nilai node childnya.
BALANCED TREE
▪ Balanced tree adalah sebuah
binary tree yang subtree kanan
dan kiri dari masing-masing
nodenya memiliki selisih height
tidak lebih dari satu.
▪ Misalkan pada binary tree
dibawah ini, akan dicek
keseimbangan subtree kanan dan
kirinya, mulai dari node A.
BALANCED TREE
▪ Balanced tree adalah sebuah
binary tree yang subtree kanan
dan kiri dari masing-masing
nodenya memiliki selisih height
tidak lebih dari satu.
▪ Misalkan pada binary tree
dibawah ini, akan dicek
keseimbangan subtree kanan dan
kirinya, mulai dari node A.
Apakah Tree ini adalah balanced tree?
Tree ini bukan balanced tree
Dengan sifat heap tree yang nilai parentnya selalu lebih besar dari childnya,
proses mengurutkan (sorting) data menjadi bisa dilakukan, yang disebut
Heapsort.
Pertama, kita harus mengenal fungsi heapify. Fungsi heapify adalah fungsi
yang membuat nilai root (atau bisa dianggap parent) menjadi lebih besar
daripada childnya, dengan menukar nilai root dengan nilai childnya jika nilai
childnya lebih besar. Algoritma nya sebagai berikut.
Algoritma Heap Sort untuk mengurutkan data secara meningkat (dari kecil ke besar):
1. Membentuk max heap tree dari data input
2. Setelah terbentuk max heap tree, nilai data yang terbesar pasti berada di root.
Langkah selanjutnya adalah menukar data pada root dengan data terakhir pada
heap, kemudian kurangi ukuran heap sebesar 1. Terakhir, heapify root dari heap.
3. Ulangi langkah 2 sampai ukuran heap adalah 1.
1. Membuat fungsi heapify yang nantinya
akan digunakan untuk membuat max
heap tree dan untuk mengekstrak satu
per satu elemennya menjadi terurut.
2. Membuat fungsi heapsortnya, dengan
langkah pertamanya membuat max heap
tree dari data input. Kemudian langkah
keduanya, mengekstrak satu per satu
elemen dari max heap tree dengan
menukar data pada root dengan data
terakhir pada heap, kemudian kurangi
ukuran heap sebesar 1 yang kemudian
dilakukan heapify root dari heap tree.

(Dapat diakses di: HeapSort )


▪ Untuk mengecek apakah sebuah binary tree itu balanced, kita perlu mengecek selisih

height subtree pada masing-masing node. Untuk mengecek selisih height subtree
pada sebuah node, diperlukan teknik traversing untuk menghitung node-node
dibawahnya, maka akan menghabiskan waktu O(n) untuk satu node saja, untuk n-
node akan menghabiskan waktu O(n) x n = O(n2), cara ini akan menghabiskan waktu
yang lama untuk n yang sangat banyak.
▪ Namun, jika kita memulai tidak dari root, melainkan dari leaf, maka kita tidak perlu

mengulang traversing sebanyak n kali karena height-nya akan selalu tersimpan.


1. Buat class untuk menciptakan binary
tree.
2. Buat fungsi yang akan men-traverse
binary tree secara rekursif. Output dari
fungsi ini adalah array berisi True/False
(True jika balanced) dan height dari root
ke leaf terdalam. kondisi balanced pada
suatu node akan terpenuhi jika ketiga
syarat terpenuhi (True), yaitu ketika child
node kanan dan kiri juga Balanced dan
selisih height child nodenya tidak lebih
dari satu.

(Dapat diakses di: Balanced Tree )

Anda mungkin juga menyukai