Anda di halaman 1dari 12

TREE &

BINARY TREE
Struktur Data

Rendi Hartadi,
Ananda RA Saputra,
M. Majid Rafi
TREE
Tree merupakan salah satu bentuk struktur data tidak linear yang paling banyak digunakan. Struktur
data tree menggambarkan hubungan yang bersifat hierarkis antara elemen- elemennya. Elemen-
elemen pada tree disebut node dan dihubungkan oleh edge yang digambarkan sebagai garis. Tree
selalu diawali dengan sebuah node yang disebut root.Tree memiliki banyak jenis, seperti binary tree,
binary search tree, AVL tree, red-black tree, splay tree, heap tree (treap), B-tree, dan lain-lain. Tree
biasa (general tree) tidak memiliki constraint seperti jenis-jenis tree lainnya.

Istilah Dalam Tree


• Node • Height of a node
• Edge • Depth of a node
• Root • Height of a tree
• Parent • Degree of a node
• Child • Subtree
• Leaf • Level
• Forest
BINARY TREE
Binary tree merupakan salah satu jenis dari tree, node pada binary tree hanya bisa memiliki
maksimal dua child yang biasanya disebut left child dan right child. Karena node-nya hanya bisa
memiliki dua child, kita bisa menghitung jumlah node maksimal dalam sebuah binary dengan
rumus 2^(h)-1, dengan h adalah ketinggian dari tree tersebut. Ada beberapa jenis Binary Tree,
diantaranya strictly binary tree dan complete binary tree. Strictly binary tree adalah binary tree
yang setiap nodenya memiliki dua child atau sama sekali tidak mempunyai child. Sedangkan
complete binary tree adalah binary tree yang setiap nodenya mempunyai dua child kecuali node
yang berada di level paling terakhir, karena node di level terakhir tidak mempunyai child.
REPRESENTASI TREE
Secara umum pada complete binary tree, jika ada suatu node yang berada di indeks ke-n dalam
representasi tree dalam array, left childnya akan berada di indeks ke-(2n+1) dan right child nya
akan berada di indeks ke-(2n+2), dengan catatan bahwa indeks array dimulai dari indeks ke-0.
Representasi tree yang lebih efisien adalah menggunakan doubly linked list. Doubly linked list
mempunyai dua pointer, PREV dan NEXT. Pointer PREV akan menuju ke left child, sedangkan
pointer NEXT akan menuju ke right child.
TRAVERSAL PADA TREE
Berbeda dengan linked list dan array yang merupakan struktur data linear, tree merupakan
struktur data non-linear sehingga urutan traversal dalam tree bisa dilakukan dengan berbagai
cara. Teknik traversing dalam tree dapat dibagi menjadi dua jenis, yaitu Breadth First Traversal
dan Depth First Traversal, kedua cara traversal ini memiliki kompleksitas waktu O(n), dengan n
adalah jumlah node pada tree.
Breadth First traversal adalah teknik traversing yang memulai traverse dari tingkat teratas (root).
Level order traversal merupakan breadth first traversal dengan cara membaca data dalam node
di setiap level secara urut, outputnya bisa menggunakan print atau menggunakan queue.
Depth first traversal adalah teknik traversing yang dimulai dari bagian paling bawah tree (leaf),
depth first traversal dibagi menjadi tiga, yaitu inorder traversal, postorder traversal, dan preorder
traversal
Breadth First Traversal
Inorder Traversal
Inorder traversal memiliki pola traverse left > visit node > traverse right. Dimulai dari root,
lakukan traverse left ke left child terus menerus, jika node sekarang sudah tidak memiliki left
child, output node tersebut (visit node). Jika node sekarang memiliki right child, traverse ke right
child sekali kemudian ulangi pola diatas.

Jika node sekarang merupakan leaf node, visit node jika belum, lalu naik ke parent node, lalu
traverse ke right child sekali dan ulangi pola diatas. Jika semua child di sebuah parent node
sudah di output, maka visit parent node tersebut lalu naik lagi satu parent. Jadi, output node
hanya dilakukan jika node tidak memiliki left child, atau ketika node memiliki left child yang
sudah di output
Preorder traversal
Preorder traversal memiliki pola visit node > traverse left > traverse right. Disini setiap
menemui node baru akan langsung di output datanya. Dimulai dari root, lalu output nodenya,
traverse ke left child lalu output nodenya, lalu traverse terus menerus ke left child sampai node
yang tidak ada left childnya. Jika node sekarang memiliki right child maka traverse ke right
childnya, jika tidak maka naik ke parentnya
Postorder Traversal
Postorder traversal memiliki pola traverse left > traverse right > visit node. Dari root traverse
left terus menerus sampai ke node yang tidak memiliki left child, jika node merupakan leaf node
maka output nodenya dan naik ke parent. Jika node memiliki right child maka traverse right
sekali lalu ulangi pola diatas. Visit node (meng-output) hanya dilakukan jika node merupakan leaf
node atau node sekarang semua childnya sudah di-output
APLIKASI TREE
• Merepresentasikan hubungan hirarkis
• Kompresi data dengan Huffman Codes
• Merepresentasikan bagan seleksi
CONTOH CODING

Silakan mengakses melalui tautan


Sumber problem : https://www.codechef.com/problems/BINTREE
Coding : Coding
TERIMA KASIH

Anda mungkin juga menyukai