0% menganggap dokumen ini bermanfaat (0 suara)
82 tayangan

Binary Tree

Dokumen tersebut membahas tentang struktur data tree dan notasi operasi matematika. Secara ringkas, tree digambarkan sebagai hubungan hirarkis antar elemen dengan satu elemen root. Dokumen juga menjelaskan istilah-istilah pada tree seperti predecessor, successor, ancestor, dan lainnya. Kemudian dibahas pula jenis-jenis tree seperti binary tree dan binary search tree beserta operasinya. Terakhir dibahas mengenai notasi prefix, infix, dan

Diunggah oleh

Hakx Deo Sinox
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
82 tayangan

Binary Tree

Dokumen tersebut membahas tentang struktur data tree dan notasi operasi matematika. Secara ringkas, tree digambarkan sebagai hubungan hirarkis antar elemen dengan satu elemen root. Dokumen juga menjelaskan istilah-istilah pada tree seperti predecessor, successor, ancestor, dan lainnya. Kemudian dibahas pula jenis-jenis tree seperti binary tree dan binary search tree beserta operasinya. Terakhir dibahas mengenai notasi prefix, infix, dan

Diunggah oleh

Hakx Deo Sinox
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 9

Merupakan salah satu bentuk struktur data tidak linear yang

menggambarkan hubungan yang bersifat hirarkis (hubungan one to


many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan
simpul/node dengan satu elemen khusus yang disebut Root dan node
lainnya terbagi menjadi himpunan-himpunan yang saling tak
berhubungan satu sama lainnya (disebut subtree). Untuk jelasnya, di
bawah akan diuraikan istilah-istilah umum dalam tree :
a) Prodecessor : node yang berada diatas node tertentu.
b) Successor : node yang berada di bawah node tertentu.
c) Ancestor : seluruh node yang terletak sebelum node tertentu dan
terletak pada jalur yang sama.
d) Descendant : seluruh node yang terletak sesudah node tertentu dan
terletak pada jalur yang sama.
e) Parent : predecssor satu level di atas suatu node.
f) Child : successor satu level di bawah suatu node.
g) Sibling : node-node yang memiliki parent yang sama dengan suatu
node.
h) Subtree : bagian dari tree yang berupa suatu node beserta
descendantnya dan memiliki semua karakteristik dari tree tersebut.
i) Size : banyaknya node dalam suatu tree.
j) Height : banyaknya tingkatan/level dalam suatu tree.
k) Root : satu-satunya node khusus dalam tree yang tak punya
predecssor.
l) Leaf : node-node dalam tree yang tak memiliki seccessor.
m) Degree : banyaknya child yang dimiliki suatu node.

Beberapa jenis Tree yang memiliki sifat khusus :
1) Binary Tree
Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh
memiliki maksimal dua subtree dan kedua subtree tersebut harus
terpisah. Sesuai dengan definisi tersebut, maka tiap node dalam
binary tree hanya boleh memiliki paling banyak dua child.


Jenis-jenis Binary Tree :
a) Full Binary Tree
Binary Tree yang tiap nodenya
(kecuali leaf) memiliki dua child dan tiap subtree harus mempunyai
panjang path yang sama.

b) 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.

c) Skewed Binary Tree
akni Binary Tree yang
semua nodenya (kecuali leaf) hanya memiliki satu child.


Implementasi Binary Tree
Binary Tree dapat diimplemntasikan dalam Pascal dengan
menggunakan double Linked List. Untuk nodenya, bisa
dideklarasikan sbb :
Type Tree = ^node;
Node = record
Isi : TipeData;
Left,Right : Tree;
end;
Contoh ilustrasi Tree yang disusun dengan double linked list :


(Ket: LC=Left Child; RC=Right Child)
Operasi-operasi pada 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 tiga pilihan
insert: sebagai 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 tak boleh kosong)
Update : Mengubah isi dari node yang ditunjuk oleh pointer current.
(Tree tidak boleh kosong)
Retrieve : Mengetahui isi dari node yang ditunjuk pointer current. (Tree
tidak boleh kosong)
DeleteSub : Menghapus sebuah subtree (node beserta seluruh
descendantnya) yang ditunjuk current. Tree tak 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.
(Average Length =
[jumlahNodeLvl1*1+jmlNodeLvl2*2++jmlNodeLvln*n]/Size
)
Traverse : Mengunjungi seluruh node-node pada tree, masing-masing
sekali. Hasilnya adalah urutan informasi secara linier yang
tersimpan dalam tree. Adatiga cara traverse : Pre Order, In
Order, dan Post Order.
Langkah-Langkahnya 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.
Untuk lebih jelasnya perhatikan contoh operasi-operasi pada Binary Tree
berikut ini :



2) Binary search Tree
Adalah Binary Tree dengan sifat bahwa semua left child harus lebih
kecil daripada right child dan parentnya. Juga semua right child harus
lebih besar dari left child serta parentnya. Binary seach tree dibuat
untuk mengatasi kelemahan pada binary tree biasa, yaitu kesulitan
dalam searching / pencarian node tertentu dalam binary tree. Contoh
binary search tree umum :

Pada dasarnya operasi dalam binary search tree sama dengan Binary tree
biasa, kecuali pada operasi insert, update, dan delete.



1. Insert : Pada Binary Search Tree, insert dilakukan setelah ditemukan
lokasi yang tepat. (Lokasi tidak ditentukan oleh user sendiri).



2. Update : Seperti pada Binary Tree biasa, namun disini uapte akan
berpengaruh pada posisi node tersebut selanjutnya. Bila setelah
diupdate mengakibatkan tree tersebut bukan Binary Search Tree
lagi, maka harus dilakukan perubahan pada tree dengan
melakukan perubahan pada tree dengan melakukan rotasi
supaya tetap menjadi Binary Search Tree.
3. Delete : Seperti halnya update, delete dalam Binary Search Tree juga
turut mempengaruhi struktur dari tree tersebut.

(Keadaan awal merupakan lanjutan gambar
sebelumnya)

Pada operasi di samping, delete dilakukan
terhadap Node dengan 2 child. Maka untuk
menggantikannya, diambil node paling kiri dari
Right SubTree yaitu 13.











PREFIX, INFIX DAN POSTFIX
NOTASI POSTFIX
Dalam struktur data yang banyak dipelajari, kita ketahui adanya 3 notasi operasi yang
dilakukan untuk suatu operasi aritmatika, yaitu prefix, infix, dan postfix.
Sebelum kita kupas mengenai notasi di atas, perlu dipahami terlebih dahulu indikator yang
membentuk terjadinya notasi dalam struktur data. Notasi terbentuk dari operand dan operator.
Operand adalah data atau nilai yang membantu dalam proses sedangkan operator adalah
fungsi yang digunakan dalam proses.
Contoh :
A + B * C
2 + 3 * 5
Keterangan : A, B, C, 2, 3, 5 adalah operand
+, * adalah operator
Ok,sekarang kita akan mencoba mengetahui operasi yang digunakan dalam perhitungan:
1. ^ (pangkat)
2. * (kali) atau / (bagi)
3. + (jumlah) atau (kurang)
Seperti yang telah dibahas di awal, diketahui notasi pada struktur data terdiri atas 3 macam,
yaitu
1. Prefix
yaitu notasi yang terbentuk atas operator dengan operand, dimana operator berada didepan
operand.
Contoh :
A + B * C (Infix)
maka notasi prefixnya adalah +A*BC
Pemecahannya :
A + B * C
diketahaui ada 3 operand yaitu : A, B, C, dan 2 operator yaitu : +, *. Proses dimulai dengan
melihat dari hirarkhi operator. Contoh diatas operator yang tertinggi adalah * kemudian +.
Tanda * diapit oleh dua operand yaitu B dan C yaitu B * C , prefixnya dengan
menggabungkan operand dan memindahkan operator kedepan dari operand, sehingga fungsi
B * C, notasi prefixnya menjadi *BC. Sehingga hasil sementara dari notasi prefix adalah
A + *BC
selanjutnya mencari prefix untuk operator yang berikutnya, yaitu +, cara yang dilakukan
sama seperti di atas, operator +, diapit oleh 2 operand, yaitu A dan *BC, gabungkan operand,
sehingga menjadi A*BC, lalu pindahkan operator kedepan operand, sehingga hasil akhir
menjadi
+ A * B C
2. Infix
yaitu notasi yang terbentuk atas operator dengan operand, dimana operator berada diantara
operand. Notasi ini hanya dikenal oleh manusia dan selalu digunakan dalam perhitungan
aritmatika.
Contoh :
A + B * C
( A + B ) * C
A ( B + C ) * D ^ E
3. Postfix
yaitu notasi yang terbentuk atas operator dengan operand, dimana operator berada dibelakang
operand. Notasi ini hanya dikenal oleh processor dan dipahami dalam ALU.
Contoh :
A + B * C (Infix)
maka notasi postfixnya adalah ABC*+
Pemecahannya :
A + B * C
diketahaui ada 3 operand yaitu : A, B, C, dan 2 operator yaitu : +, *. Proses dimulai dengan
melihat dari hirarkhi operator. Contoh diatas operator yang tertinggi adalah * kemudian +.
Tanda * diapit oleh dua operand yaitu B dan C yaitu B * C , postfixnya dengan
menggabungkan operand B dan C menjadi BC lalu memindahkan operator ke belakang
operand C, sehingga fungsi B * C, notasi postfixnya menjadi BC*. Sehingga hasil sementara
dari notasi postfix adalah
A + BC*
selanjutnya mencari postfix untuk operator yang berikutnya, yaitu +, cara yang dilakukan
sama seperti di atas, operator +, diapit oleh 2 operand, yaitu A dan BC*, gabungkan operand
tersebut, sehingga menjadi ABC*, lalu pindahkan operator + ke belakang operand ABC*,
sehingga hasil akhir menjadi

Anda mungkin juga menyukai