STRUKTUR DATA 2014 M Bayu Wibisono Struktur Data
STRUKTUR DATA 2014 M. Bayu Wibisono
Struktur Data. . . 1 Pengenalan Struktur Data UTS EDT Struktur ALGORITHMA Data Queue Stack Alg Array Struct • Pengenalan STD • EDT • Algorithma Review • Array • Structure • Stack • Queue • UTS
Struktur Data. . . 2 Pembahasan UTS UAS Searching Pointer Struktur ALGORITHMA Data Sorting Link. List Tree Graph • • Pembahasan UTS Pointer Link. List Tree Graph Sorting Searching UAS
Pembahasan • • • Tree Contoh Penerapan Terminologi Tree Traversal Binary Tree Search Binary Tree
Structur Data : TREE PENDAHULUAN Dalam struktur data, pohon (TREE) memegang peranan yang cukup penting. Struktur ini biasanya digunakan - untuk menyajikan data yang mengandung hubungan hierarkykal antara elemen-elemen mereka. banyak aplikasi menggunakan informasi dan data yang secara alami memiliki struktur hirarkis berguna dalam membantu memecahkan banyak masalah algoritmis Contoh struktur pohon (Tree) yang biasa digunakan dalam kehidupan sehari-hari adalah : �Silsilah keluarga �Daftar isi buku �Struktur organisasi �Pohon keputusan
Structur Data : TREE TERMINOLOGI TREE Sejumlah node yang berhubungan secara hirarkis dimana node pada suatu hirarki merupakan cabang dari node dengan hirarki yang lebih tinggi dan juga memiliki cabang ke beberapa node lainnya pada hirarki yang lebih rendah. ROOT: Node dari suatu tree yang memiliki hirarki paling tinggi LEAF Node yang tidak mempunyai cabang PARENT (ayah) Node pada hirarki langsung diatas node tersebut (predecessor satu level) CHILD Node pada hirarki langsung dibawah node tersebut (successor satu level)
Structur Data : TREE TERMINOLOGI TREE Predecessor Node yang berada di atas node tertentu Successor Node yang berada di bawah node tertentu Ancestor/Nenek Moyang Seluruh node yang terletak sebelum node tertentu pada jalur yang sama Descendant/Keturunan Seluruh node yang terletak sesudah node tertentu pada Jalur yang sama Inner Node yang bukan leaf Edge Penghubung antara dua buah node
Structur Data : TREE TERMINOLOGI TREE Sibling Node-node yang satu ayah, sehingga berlevel sama. Dikenal juga istilah sibling yang tepat di kanan dan sibling yang tepat di kiri Subtree Bagian dari tree berupa suatu node beserta descendantnya Size Banyaknya node dalam suatu tree Level (Depth) Hirarki suatu node. Root berhirarki 0, node dibawahnya berhirarki 1 dan seterusnya. Height Selisih hirarki dari level terendah ke level ertinggi/nomor level leaf terbawah.
Structur Data : TREE TERMINOLOGI TREE Depth/Kedalaman Jumlah edge dari root sampai dengan node tersebut Degree Banyaknya child dari suatu node Forest Himpunan dari sejumlah tree
CONTOH PENERAPAN TERMINOLOGI TREE A B F C G K E D H L M I N J O 10
CONTOH PENERAPAN TERMINOLOGI TREE • A • • • B F C G D H E I J • • K L M N O • Parent B, C, D dan E adalah A, sehingga B, C, D, E adalah saudara (siblings) Semua node di bawah suatu node induk hanya dapat diakses melalui induknya Lintasan (path) sebuah node X adalah urutan akses untuk mendapatkan X yang dimulai dari Akar. Contoh : Path(M) = [A – B – G – M] Panjang lintasan (path length) X adalah jumlah node yang harus diakses untuk mendapatkan X; sehingga |Path(M)| = 4. (Ada juga yang menyatakan panjang lintasan sebuah node adalah jumlah garis dari akar sampai node tersebut Tinggi (height) dari sebuah pohon adalah panjang lintasan terpanjang , jadi tinggi pohon di disamping adalah = 4 Jika ada sebuah lintasan dari node a ke node b, maka a adalah pendahulu (ancestor) dari b dan b disebut keturunan (descendent) dari a Kedalaman (depth) dari sebuah node adalah panjang lintasan dari akar ke node tersebut. Depth (G) = 3 11
CONTOH PENERAPAN TERMINOLOGI TREE 12
Bagian-bagian Tree nodes 13
Bagian-bagian Tree parent node 14
Bagian-bagian Tree parent node child nodes 15
Bagian-bagian Tree parent node child nodes 16
Bagian-bagian Tree root node leaf nodes 17
Bagian-bagian Tree sub-tree 18
Bagian-bagian Tree sub-tree 19
Bagian-bagian Tree sub-tree 20
Karakteristik Khusus A. Terdapat 1 node yang unik, yang tidak memiliki predecessor, yang disebut dengan root (akar) B. Terdapat satu atau beberapa node yang tidak memiliki successor yang disebut dengan leaf (daun) C. Setiap node kecuali root pasti memiliki satu predecessor D. Setiap node kecuali leaf pasti memiliki 1 atau lebih successor
Binary TREE • • • Bentuk struktur data Tree memiliki bentuk yang umum. Tetapi untuk dapat digunakan dalam proses komputer yang efisien, maka dibentuklah Binary Tree atau biasa disebut sebagai B-Tree Sifat-sifat Khusus yang dimiliki B-Tree adalah – – Tree dengan cabang tidak lebih dari dua (hanya 0, 1, atau 2). Tree dengan seluruh innernya paling banyak berderajat 2. Cabang-cabang binary tree dibedakan menjadi cabang kiri dan cabang kanan. Jika hanya dijumpai satu cabang, harus ditentukan, cabang kiri atau kanan. Bentuk-bentuk B-Tree : Complete binary tree, full binary tree, perfect binary tree, skewed binary tree
Full Binary Tree Binary tree yang : Setiap node memiliki tepat 0 atau 2 child
Complete Binary Tree Binary tree yang : 1. Setiap leaf memiliki depth n or n-1 2. Setiap leaf pada depth n / pada level terendah merapat ke kiri √ √ X
Perfect Binary Tree Binary tree yang : 1. Setiap inner memiliki tepat dua child 2. Setiap leaf terletak pada depth yang sama
Skewed Binary Tree Binary tree yang semua nodenya kecuali leaf hanya memiliki satu child
Representasi Tree
Representasi Tree • Notasi Tingkat • Notasi Kurung – (A(B(D, E(I, J)), C(F, G, H)))
Representasi Binary Tree • Menggunakan POINTER Bentuk paling sederhana (one-way) Bentuk 2 -way Data Bentuk yang lebih lengkap Data
Operasi-operasi Tree • Insert: menambah node ke dalam Tree secara rekursif. Jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan, sebaliknya jika lebih kecil maka akan diletakkan di node sebelah kiri. Untuk data pertama akan menjadi elemen root. • Find: mencari node di dalam Tree secara rekursif sampai node tersebut ditemukan dengan menggunakan variable bantuan ketemu. Syaratnya adalah tree tidak boleh kosong. • Traverse: yaitu operasi kunjungan terhadap node-node dalam pohon dimana masing-masing node akan dikunjungi sekali • Count: menghitung jumlah node dalam Tree • Height : mengetahui kedalaman sebuah Tree • Find Min dan Find Max : mencari nilai terkecil dan terbesar pada Tree • Child : mengetahui anak dari sebuah node (jika punya)
Tree Traversal (Tree Search) • Dalam ilmu komputer , tree traversal (juga dikenal sebagai pencarian pohon – tree search ) adalah suatu proses untuk mengunjungi (memeriksa dan / atau memperbarui) setiap node dalam sebuah struktur data pohon , tepat sekali, dengan cara yang sistematis. • Traversals tersebut diklasifikasikan berdasarkan urutan node yang dikunjungi. Algoritma ini digunakan untuk pohon biner dan dapat juga digeneralisasi untuk pohon lain. • Nama metode traversal berkaitan dengan cara kunjungan terhadap node. • Untuk semua traverse berlaku kunjungan “the left subtree before the right subtree”.
Metode TRAVERSAL PRE-ORDER PREFIX DFS IN-ORDER INFIX POST-ORDER - POSTFIX Tree Search Nama yang diberikan untuk Metode Traversal berasal dari urutan node yang dikunjungi. q. Pencarian ke Dalam (Depthfirst-search/DFS) - mudah dilaksanakan melalui stack ØPreorder, ØInorder, ØPostorder BFS q. Pencarian Melebar (Breadthfirst-Search/BFS) - mudah dilaksanakan melalui antrian
Example: Preorder 43 31 64 20 40 28 43 31 56 33 20 28 89 47 40 33 64 59 56 47 59 89 33
Inorder Traversal • Traverse the left subtree. • Visit the node. • Traverse the right subtree. 34
Example: Inorder 43 31 64 20 40 28 20 28 56 33 31 33 89 47 40 43 47 59 56 59 64 89 35
Postorder Traversal • Traverse the left subtree. • Traverse the right subtree. • Visit the node. 36
Example: Postorder 43 31 64 20 40 28 28 20 56 33 33 40 89 47 31 47 59 59 56 89 64 43 37
Expression Tree • A Binary Tree built with operands and operators. • Also known as a parse tree. • Used in compilers. 38
Example: Expression Tree + / 1 / 3 * 6 4 7 1/3 + 6*7 / 4 39
Notation • Preorder – Prefix Notation • Inorder – Infix Notation • Postorder – Postfix Notation 40
Example: Infix + / / 1 3 * 4 6 1 / 3 + 6 7 * 7 / 4 41
Example: Postfix + / / 1 3 * 4 7 6 Recall: Reverse Polish Notation 1 3 / 6 7 * 4 / + 42
Example: Prefix + / / 1 3 * 6 + / 1 3 / * 4 7 6 7 4 43
Binary Search Tree A Binary Tree such that: • Every node entry has a unique key. • All the keys in the left subtree of a node are less than the key of the node. • All the keys in the right subtree of a node are greater than the key of the node. 44
Example 1: key is an integer 43 31 64 20 40 28 33 56 47 89 59 45
Insert • Create new node for the item. • Find a parent node. • Attach new node as a leaf. 46
Insert 57 Example: 43 31 64 20 40 28 33 56 47 89 59 47
Insert 57 Example: 43 31 64 20 40 28 33 56 47 89 59 57 48
Search: Checklist • if target key is less than current node’s key, search the left sub-tree. • else, if target key is greater than current node’s key, search the right sub-tree. • returns: – if found, pointer to node containing target key. – otherwise, NULL pointer. 49
Search Example: 59 43 31 64 20 40 28 33 56 47 89 59 57 found 50 50
Search Example: 61 43 31 64 20 40 28 33 56 47 89 59 57 failed 51 51
Sumber : • Dr. Ir. Fahren Bukhari, M. Sc. • Kymberly Fergusson
- Slides: 52