STRUKTUR DATA 2014 M. Bayu Wibisono
Struktur Data ...1 Pengenalan STD EDT Algorithma Algorithma Review Array Structure Stack Queue UTS Pengenalan Struktur Data ALGORITHMA Algorithma UTS EDT Struktur Data Queue Alg Stack Array Struct
Struktur Data ...2 Pembahasan UTS Pointer Algorithma LinkList Tree Graph Sorting Searching UAS Pembahasan UTS ALGORITHMA Algorithma UAS Pointer Struktur Data Searching LinkList Sorting Tree Graph
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 PARENT (ayah) CHILD TERMINOLOGI TREE 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 Sibling Subtree 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 Depth/Kedalaman 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 B C D F G H I J M K L N O
CONTOH PENERAPAN TERMINOLOGI TREE 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 B C D E F G H I J M K L N O
CONTOH PENERAPAN TERMINOLOGI TREE
Bagian-bagian Tree nodes
Bagian-bagian Tree parent node
Bagian-bagian Tree child nodes parent node
Bagian-bagian Tree child nodes parent node
Bagian-bagian Tree leaf nodes root node
Bagian-bagian Tree sub-tree
Bagian-bagian Tree sub-tree
Bagian-bagian Tree sub-tree
Karakteristik Khusus Terdapat 1 node yang unik, yang tidak memiliki predecessor, yang disebut dengan root (akar) Terdapat satu atau beberapa node yang tidak memiliki successor yang disebut dengan leaf (daun) Setiap node kecuali root pasti memiliki satu predecessor 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 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
X √ √ Complete Binary Tree Binary tree yang : Setiap leaf memiliki depth n or n-1 Setiap leaf pada depth n / pada level terendah merapat ke kiri X √ √
Perfect Binary Tree Binary tree yang : Setiap inner memiliki tepat dua child 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 Data Bentuk paling sederhana (one-way) Data Bentuk 2-way Data Bentuk yang lebih lengkap
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 Tree Search DFS IN-ORDER -INFIX PRE-ORDER - PREFIX POST-ORDER - POSTFIX BFS Nama yang diberikan untuk Metode Traversal berasal dari urutan node yang dikunjungi. Pencarian ke Dalam (Depth- first-search/DFS) - mudah dilaksanakan melalui stack Preorder, Inorder, Postorder Pencarian Melebar (Breadth-first-Search/BFS) - mudah dilaksanakan melalui antrian
Example: Preorder 43 43 31 64 31 64 20 20 40 56 89 40 56 89 28 33 47 59 28 33 47 59
Inorder Traversal Traverse the left subtree. Visit the node. Traverse the right subtree.
Example: Inorder 43 43 31 64 31 64 20 20 40 56 89 40 56 89 28 33 47 59 28 33 47 59
Postorder Traversal Traverse the left subtree. Traverse the right subtree. Visit the node.
Example: Postorder 43 43 31 64 31 64 20 20 40 56 89 40 56 89 28 33 47 59 28 33 47 59
Expression Tree A Binary Tree built with operands and operators. Also known as a parse tree. Used in compilers.
Example: Expression Tree + / / 1 3 * 4 6 7 1/3 + 6*7 / 4
Notation Preorder Inorder Postorder Prefix Notation Infix Notation Postfix Notation
Example: Infix + + / / / / 1 1 3 * 4 3 * 4 6 7 6 7
Example: Postfix 1 Recall: Reverse Polish Notation + + / / / / 1 3 * 4 6 7 6 7 Recall: Reverse Polish Notation
Example: Prefix + / / 1 3 * 4 6 7 + / 1 3 / * 6 7 4
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.
Example 1: key is an integer 43 31 64 20 40 56 89 28 33 47 59
Insert Create new node for the item. Find a parent node. Attach new node as a leaf.
Insert 57 Example: 43 31 64 20 40 56 89 28 33 47 59
Insert 57 Example: 43 31 64 20 40 56 89 28 33 47 59 57
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.
Search Example: 59 43 31 64 20 40 56 89 28 33 47 59 57 found 50
Search Example: 61 43 31 64 20 40 56 89 28 33 47 59 57 failed 51
Sumber : Dr. Ir. Fahren Bukhari, M.Sc. Kymberly Fergusson