270 likes | 812 Views
TRAVERSING BINARY TREE. GALIH WASIS WICAKSONO. TOPIK BAHASAN. PENGERTIAN TRAVERSING BINARY TREE 3 JENIS TRAVERSAL PADA BINARY TREE IMPLEMENTASI TRAVERSING BINARY TREE DALAM KODE PROGRAM EFISIENSI BINARY TREE. APA ITU TREE?. Gambaran alami dari Tree. Leave. Branch. Root. APA ITU TREE ?.
E N D
TRAVERSING BINARY TREE GALIH WASIS WICAKSONO
TOPIK BAHASAN PENGERTIAN TRAVERSING BINARY TREE 3 JENIS TRAVERSAL PADA BINARY TREE IMPLEMENTASI TRAVERSING BINARY TREE DALAM KODE PROGRAM EFISIENSI BINARY TREE
APA ITU TREE? • Gambaran alami dari Tree Leave Branch Root
APA ITU TREE ? • Tree dalam perspektif Ilmu Komputer Root Branch Leave
TRAVERSING TREE • Travers pada tree bermakna mengunjungi setiap node dengan tujuan tertentu. • Pada dasarnya proses traverse tidak sering digunakan, disebabkan karena secara umum prosesnya tidak cepat. • Akan tetapi traverse pada tree dapat bermanfaat pada aplikasi yang anda buat, dan secara teori menarik.
3 JENIS TRAVERSE BINARY TREE • Inorder • Preorder • Postorder • Finding
INORDER TRAVERSAL • Inorder paling banyak digunakan dalam Binary Search Tree • Inorder dilakukan pada binary tree yang sudah berada dalam kondisi terurut didasarkan key/element tree tersebut. • Cara paling mudah mengimplementasikan inorder dengan rekursif
IMPLEMENTASI INORDER voidinOrder(BinaryTree t) { if (t != null) { inOrder(t.leftChild); visit(t); inOrder(t.rightChild); } }
PREORDER & POSTORDER • Preorder dan postorder digunakan untuk analisis atau mengurai ekspresi aljabar • Umumnya digunakan untuk transformasi dari bentuk infix ke bentuk postfis maupun prefix
EKSPRESI ARITMATIKA • (a + b) * (c + d) + e – f/g*h + 3.25 • Ekspresi aritmatika diatas terdiri dari 3 jenis entitas • Operators (+, -, /, *). • Operands (a, b, c, d, e, f, g, h, 3.25, (a + b), (c + d),etc.). • Delimiters [(, )].
MASALAH PADA INFIX • Butuh prioritas operator, tie breaker, dan pembatas. • Mengakibatkn perhitungan di komputer menjadi sulit. • Bentuk ekspresi Postfix dan prefix tidak bergantung pada prioritas operator, tie breaker, atau pembatas, sehingga lebih mudah dioperasikan oleh komputer. • Ex. Infix : a + b
CONTOH • Infix = a + b * c • Postfix = a b c * + • Infix = a * b + c • Postfix = a b * c + • Infix = (a + b) * (c – d) / (e + f) • Postfix = a b + c d - * e f + /
+ a b - a SOLUSI BINARY TREE • a + b • - a
/ / + * e f - + - a b c d BINARY TREE SOLUTION • (a + b) * (c – d) / (e + f)
IMPLEMENTASI PREORDER voidpreOrder(BinaryTree t) { if (t != null) { visit(t); preOrder(t.leftChild); preOrder(t.rightChild); } }
IMPLEMENTASI POSTORDER void postOrder(BinaryTree t) { if (t != null) { preOrder(t.leftChild); preOrder(t.rightChild); visit(t); } }
EFISIENSI BINARY TREE • Search pada binary tree = ordered array • O(Log N) -> Full Binary Tree • Search pada binary tree vs linked list & unordered array kasus 100.000 item. • linked list & unordered array butuh rata-rata 500.000 perbandingan • Binary tree butuh 20 (atau kurang) perbandingan • Operasi traversal pada binary tree tidak se-efisen operasi lain, akan tetapi dapat dimanfatkan untuk menguraikan ekspresi aljabar.
REPRESENTASI BINARY TREE BINARY TREE PROPERTIES ARRAY REPRESENTATION LINKEDLIST REPRESENTATION
MINIMUM NUMBER OF NODE • Jumlah node minimum binary tree = level (L) • 1 node pada setiap level
MAXIMUM NUMBER OF TREE Maximum number of nodes • = 1 + 2 + 4 + 8 + … + 2L-1 • = 2L- 1
NUMBER OF NODE & LEVEL • Jika n adalah jumlah node pada binary tree • Dan L adalah level pada binary tree maka : • h <= n <= 2L– 1 • log2(n+1) <= h <= n
PENOMORAN PADA FULL BT • Nomer node dimulai dari 1 hingga 2L-1 • Nomer antar level dimulai dari atas ke bawah • Nomer pada satu level dimulai dari kiri ke kanan 1 2 3 4 6 5 7 8 9 10 11 12 13 14 15
PENOMORAN NODE • i Adalah node root (tidak memiliki parent) • i= 1 • Penomoran left child adalah 2i • 2i > n -> tidak memiliki child • Penomoran right child adalah 2i + 1 • 2i+1 > n tidak memiliki child
b 1 a 2 3 c 4 5 6 7 d f e g 8 9 10 h i j tree[] 0 5 10 REPRESENTASI PD ARRAY • Penomoran pd node menggunakan skema penomoran pada full binary tree. Nomor i disimpan pada tree[i] a b c d e f g h i j
1 a 3 b 15 7 d c tree[] a - b - - - c - - - - - - - d 0 5 10 15 REPRESENTASI PD ARRAY 0 5 10 15
root a c b d f e g h leftChild element rightChild REPRESENTASI PD LINKEDLIST