LAPORAN PRAKTIKUM 6 ALGORITMA STRUKTUR D (1)

LAPORAN PRAKTIKUM XII
TREE
Disusun untuk Memenuhi Matakuliah Praktikum Algoritma Struktur Data
Dibimbing oleh Ibu Annisa Puspa Kirana, S. Kom, M. Kom

Oleh:
Dwitha Fajri Ramadhani
Ika Damayanti

160533611410

160533611505

S1 PTI’16 OFF B

UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
April 2017


TREE
Tujuan
Setelah mempelajari bab ini diharapkan mahasiswa akan mampu :
1. Memahami tipe data abrstrak binary tree.

DASAR TEORI
TREE
1.1 Definisi Tree
Struktur pada tree (pohon) tidak linear seperti pada struktur linked list, stack, dan
queue. Setiap node pada tree mempunyai tingkatan, yaitu orang tua (parent) dan anak
(child). Struktur ini sebenarnya merupakan bentuk khusus dari struktur tree yang lebih
umum, setiap orang tua hanya memiliki dua anak sehingga disebut pohon biner (binary
tree), yaitu anak kiri dan anak kanan.

1.2 Istilah Dasar Tree
Tree merupakan salah satu bentuk struktur data tidak linear yang menggambarkan
hubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree
dapat didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang
disebut root dan node, disebut sub tree/sub pohon atau cabang.
Sehingga secara sederhana pohon bisa didefinisikan sebagai kumpulan elemen yang

salah satu elemennya disebut dengan akar (root) dan elemen yang lainnya (simpul),
terpecah menjadi sejumlah himpunan yang saling tidak berhubungan satu dengan yang
lainnya.











Predecessor

: node yang berada di atas node tertentu

Successor


: node yang dibawah node tertentu

Ancestor

: seluruh node yang terletak sebelum node tertentu dan terletak

sesudah pada jalur yang sama
Descendant

: seluruh node yang terletak sesudah node tertentu dan terletak

sesudah pada jalur yang sama
Parent

: predecessor satu level diatas suatu node

Child

: successor satu level dibawah suatu node













Sibling

: node-node yang memiliki parent yang sama dengan suatu

node
Subtree

: bagian dari tree yang berupa suatu node beserta descendant


nya dan memiliki semua karakteristik dari tree tersebut
Size

: banyaknya node dalam suatu tree

Height

: banyaknya tingkatan/level dalam suatu tree

Root

: satu-satunya node khusus dalam tree yang tidak mempunyai

predecessor
Leaf

: node-node dalam tree yang tidak memiliki successor

Degree


: banyaknya child yang dimiliki suatu node

1.3 Jenis-Jenis Tree
1.3.1 Binary Tree
adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua
subtree dan kedua subtree tersebut harus terpisah. Maka tiap node dalam binary
tree hanya boleh memiliki paling banyak dua child.
Keterangan :
Left Child

:

B, D, H, ...

Right Child :

C, G, J, ...

Jenis Binary Tree :
1.3.1.1 Full Binary Tree

Binary Tree yang tiap nodenya (kecuali leaf) memiliki dua child dan tiap sub tree
harus mempunyai panjang path yang sama.
1.3.1.2 Complete Binary Tree
Mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path
yang berbeda. Node kecuali leaf memiliki 0 atau 2 child.
1.3.1.3 Skewed Binary Tree
Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu child.

1.3.2 Operasi Binary Tree








Create

:


membentuk binary tree baru yang masih kosong

Clear

:

mengosongkan binary tree yang sudah ada

Empty

:

function untuk memeriksa apakah binary tree masih kosong

Insert

:

memasukkan sebuah node ke dalam tree. Ada 3 pilihan insert,


yaitu : root, left child, atau right child. Khusus insert sebagai root, tree harus





dalam keadaan kosong.
Find

:

mencari root, parent, left child, atau right child dari suatu node.

Tree tidak boleh kosong.
Update

:

mengubah isi dari node yang ditunjuk oleh pointer current. Tree


tidak boleh kosong.
Retrive

:

mengetahui isi dari node yang ditunjuk oleh pointer current. Tree

tidak boleh kosong.
DeleteSub

:

menghapus sebuah subtree (node beserta seluruh descedantnya)

yang ditunjuk current. Tree tidak boleh kosong. Setelah itu pointer current akan



berpindah ke parent dari node yang dihapus.

Characteristic: mengetahui karakteristik dari suatu tree, yakni : size, height, serta
average lengthnya. Tree tidak boleh kosong.
Traverse

:

mengunjungi seluruh node pada tree, masing-masing sekali.

Hasilnya adalah urutan informasi secara linear yang tersimpan dalam tree. Ada
tiga cara traverse : Pre Order, InOrder, dan PostOrder.
Langkah Traverse
✓ PreOrder

:

cetak isi node yang dikunjungi, kunjungi Left Child,

kunjungi Right Child.

✓ InOrder

:

kunjungi Left Child, cetak isi node yang dikunjungi,

kunjungi Right Child.

✓ PostOrder

:

kunjungi Left Child, kunjungi Right Child, cetak isi node

yang dikunjungi.
1.3.3 Binary Search Tree
Adalah binary tree dengan sifat bahwa semua left child harus lebih kecil daripada
right child dan parentnya. Semua right child harus lebih besar dari left child serta
parentnya. Binary Search Tree dibuat untuk mengatasi kelemahan pada binary tree
biasa, yaitu kesulitan dalam searching/pencarian node tertentu dalam binary tree.

1.3.4 Operasi Binary Tree
Pada dasarnya sama dengan operasi pada binary tree, kecuali pada operasi insert,



update, dan delete.
Insert

:

dilakukan setelah ditemukan lokasi yang tepat, lokasi tidak

ditentukan oleh user sendiri.
Update

:

update akan berpengaruh pada posisi node tersebut selanjutnya.

Setelah diupdate mengakibatkan tree tersebut bukan binary search tree lagi, maka
harus dilakukan perubahan pada tree dengan melakukan rotasi supaya tetap


menjadi binary search tree.
Delete

:

akan mempengaruhi struktur dari tree.

1.3.5 AVL Tree
Adalah binary search tree yang memiliki perbedaan tingkat tinggi/level antara
subtree kiri dan subtree kanan maksimal adalah 1. Dengan AVL Tree, waktu
pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.
Selain AVL Tree terdapat juga Height Balanced n tree, yaitu binary search tree
yang memiliki perbedaan level antara subtree kiri dan subtree kanan maksimal
adalah n. Sehingga AVL Tree adalah Height Balanced 1 Tree.

1.4 Simbol Bantu
Untuk mempermudah menyeimbangkan tree, maka digunakan simbol-simbol bantu.






Minus ( - ) :
1.4.2 Plus ( + )
Nol ( 0 )
yang sama.

:

digunakan apabila subtree kiri lebih panjang dari subtree kanan.
:

digunakan apabila subtree kanan lebih panjang dari subtree kiri.

digunakan apabila subtree kiri dan subtree kanan mempunyai height

Latihan 1
Pemrograman Java
Nama Program

: package P12

Bahasa Pemrogramam

: Java

Compiler

: NetBeans IDE 8.2

Script program

:

Output Program

:

Penjelasan Program

:

Pada program kali ini terdapat dua class yang bernama class Node dan class Tree.
Kedua class tersebut mempunyai method-method, diantaranya method node pada class Node
sebagai pengatur tata letak dalam permasalahan binary tree, root merupakan tempat
menampung data yang pertama kali masuk , sedangkan child merupakan tempat dari data lain
yang baru masuk. Apabila data yang dimasukkan lebih besar dari nilai root otomatis menjadi
nilai data child sebelah kiri, sedangkan data yang lebih kecil akan menjadi child sebelah
kanan. Preorder transversal mencetak data dengan urutan root, child kiri, child kanan,
sedangkan inorder transversal mencetak data dengan urutan child kiri, root, child kanan, dan
postorder transversal mencetak data dengan urutan child kiri, child kanan, root. Dalam
program diatas terdapat fungsi yang digunakan untuk merandom angka, sehingga output dari
setiap kali run akan berbeda atau acak, dengan batas random dari angka 0 hingga 100,
kemudian program akan menampilkan random data dengan cetak preorder, inorder, dan
postorder transversal.

Latihan 2
Pemrograman Java
Nama Program

: package P12_2

Bahasa Pemrogramam

: Java

Compiler

: NetBeans IDE 8.2

Script program

:

Class TreeNode

Class BinaryTree

Class BinaryTreeApp

Output Program

:

Penjelasan Program

:

Pada program diatas menggunakan 3 class yang bernama TreeNode, BinaryTree, dan
BinaryTreeApp, dengan class utama adalah BinaryTreeApp. Pada class TreeNode terdapat
deklarasi variabel-variabel, class BinaryTree berfungsi sebagai class yang menampung
metod-method seperti method preOrder, inOrder, dan postOrder. Sama dengan penjelasan
diatas bahwa preorder transversal mencetak data dengan urutan root, child kiri, child kanan,
sedangkan inorder transversal mencetak data dengan urutan child kiri, root, child kanan, dan
postorder transversal mencetak data dengan urutan child kiri, child kanan, root. Sebelumnya
praktikkan menambahkan data pada program antara lain 23, 18, 44, 12, 20, 35, 52. Setelah
data tersebut diproses menggunakan method-method, program akan menampilkan sesuai
dengan jawaban pada output program.

KESIMPULAN
Dari praktikum kali ini, kami dapat menyimpulkan bahwa :


Binary Tree adalah sebuah pohon biner, dimana tiap node memiliki tepat 2 subtree (memiliki maksimal 2 cabang/degree). Binary tree digunakan untuk data yang




terurut secara hirarki.
Binary Tree dapat direpresentasikan dengan menggunakan Array maupun linked
list. Contohnya untuk membuat program tingkatan pegawai dalam perusahaan.
Contoh Struktur Data Binary Tree :

DAFTAR RUJUKAN
Annisa Puspa Kirana, S.Kom, M.Kom. 2017. Modul Praktikum Algoritma dan Struktur Data.
Malang : Universitas Negeri Malang.
Putra. 2011. Tree, http://ulmyee-poetra.blogspot.co.id/2011/03/tree-pohon.html, diakses pada
tanggal 23 April 2017, pukul 08:45.