{"id":4256,"date":"2026-08-30T22:45:48","date_gmt":"2026-08-30T15:45:48","guid":{"rendered":"https:\/\/focusnic.com\/blog\/?p=4256"},"modified":"2026-08-30T22:45:50","modified_gmt":"2026-08-30T15:45:50","slug":"binary-tree-struktur-data","status":"publish","type":"post","link":"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/","title":{"rendered":"Binary Tree: Algoritma, dan Implementasi pada Struktur Data"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_87 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Pengertian_Binary_Tree\" >Pengertian Binary Tree<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Karakteristik_Utama\" >Karakteristik Utama<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Jenis-jenis_Binary_Tree\" >Jenis-jenis Binary Tree<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#1_Full_Strict_Binary_Tree\" >1. Full (Strict) Binary Tree<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#2_Complete_Binary_Tree\" >2. Complete Binary Tree<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#3_Perfect_Binary_Tree_dan_Skewed_Binary_Tree\" >3. Perfect Binary Tree dan Skewed Binary Tree<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Operasi_Dasar_pada_Binary_Tree\" >Operasi Dasar pada Binary Tree<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Traversal_Preorder_Inorder_Postorder\" >Traversal: Preorder, Inorder, Postorder<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Penyisipan_Insert_dan_Penghapusan_Delete_Node\" >Penyisipan (Insert) dan Penghapusan (Delete) Node<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Pencarian_Search_Node\" >Pencarian (Search) Node<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Implementasi_Binary_Tree\" >Implementasi Binary Tree<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Studi_Kasus_Penggunaan_dalam_Mesin_Pencari\" >Studi Kasus: Penggunaan dalam Mesin Pencari<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/focusnic.com\/blog\/binary-tree-struktur-data\/#Kesimpulan\" >Kesimpulan<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pengertian_Binary_Tree\"><\/span>Pengertian Binary Tree<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sebuah <strong>binary tree<\/strong> adalah <strong>struktur data<\/strong> pohon di mana setiap simpul (node) memiliki paling banyak dua anak (child). Anak-kiri disebut <strong>left child<\/strong> dan anak-kanan <strong>right child<\/strong>. Komponen inti binary tree meliputi:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Root<\/strong>: simpul paling atas dan titik awal traversals.<\/li>\n\n\n\n<li><strong>Node<\/strong>: elemen yang menyimpan data serta referensi ke anak.<\/li>\n\n\n\n<li><strong>Edge<\/strong>: hubungan (link) antar simpul.<\/li>\n\n\n\n<li><strong>Leaf<\/strong>: simpul tanpa anak, menandai ujung cabang.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Binary tree sering menjadi landasan bagi struktur yang lebih kompleks seperti <strong>binary search tree (BST)<\/strong>, <strong>heap<\/strong>, pohon AVL, dan pohon B. Kelebihan utama adalah operasi pencarian, penyisipan, dan penghapusan yang dapat dilakukan dengan kompleksitas rata-rata O(log n) pada tree seimbang.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Karakteristik_Utama\"><\/span>Karakteristik Utama<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Beberapa karakteristik yang membedakan binary tree dari pohon umum:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Derajat maksimum<\/strong> setiap node adalah 2.<\/li>\n\n\n\n<li>Keyakinan arah anak jelas: kiri dan kanan.<\/li>\n\n\n\n<li><strong>Kedalaman<\/strong> (depth) mengindikasikan jarak antara root dan node tertentu.<\/li>\n\n\n\n<li><strong>Tingkatan<\/strong> (level) memetakan node ke lapisan pohon: root di level 1, anak di level 2, dan seterusnya.<\/li>\n\n\n\n<li><strong>Tinggi<\/strong> (height) tree adalah kedalaman node terjauh dari root.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan pemahaman karakteristik ini, kita dapat memprediksi kinerja operasi dan memilih implementasi yang tepat sesuai kebutuhan aplikasi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Jenis-jenis_Binary_Tree\"><\/span>Jenis-jenis Binary Tree<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Full_Strict_Binary_Tree\"><\/span>1. Full (Strict) Binary Tree<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Full binary tree, atau strict binary tree, adalah pohon di mana setiap node memiliki 0 atau 2 anak. Struktur full binary tree memastikan setiap parent node terisi penuh dua cabang atau tidak sama sekali. Hal ini menghasilkan keseimbangan yang lebih baik jika dibandingkan skewed tree, meski tidak menjamin ketinggian minimal.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Complete_Binary_Tree\"><\/span>2. Complete Binary Tree<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Complete binary tree diisi dari kiri ke kanan tanpa celah. Semua level kecuali yang terakhir terisi penuh, sedangkan level terakhir diisi mulai dari posisi paling kiri. Keuntungan complete binary tree adalah implementasi yang efisien menggunakan array, meminimalkan overhead pointer, serta memudahkan perhitungan lokasi anak (2*i dan 2*i+1).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Perfect_Binary_Tree_dan_Skewed_Binary_Tree\"><\/span>3. Perfect Binary Tree dan Skewed Binary Tree<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Perfect binary tree adalah full binary tree di mana semua leaf berada pada level yang sama, menghasilkan node count ideal: 2^h &#8211; 1, dengan h tinggi tree. Sementara <em>skewed binary tree<\/em> (left-skewed atau right-skewed) memiliki setiap node hanya satu anak. Struktur skewed menurunkan efisiensi operasi menjadi O(n) karena mirip linked list.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Operasi_Dasar_pada_Binary_Tree\"><\/span>Operasi Dasar pada Binary Tree<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Traversal_Preorder_Inorder_Postorder\"><\/span>Traversal: Preorder, Inorder, Postorder<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Traversal mengunjungi setiap simpul sesuai urutan tertentu. Pada binary tree, terdapat tiga metode umum:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Preorder<\/strong> (Root, Left, Right): kunjungi root, lalu panggil preorder pada subtree kiri, kemudian subtree kanan. Berguna untuk menyalin pohon.<\/li>\n\n\n\n<li><strong>Inorder<\/strong> (Left, Root, Right): kunjungi subtree kiri, root, lalu subtree kanan. Pada BST, inorder traversal menghasilkan data terurut menaik.<\/li>\n\n\n\n<li><strong>Postorder<\/strong> (Left, Right, Root): kunjungi subtree kiri, kanan, kemudian root. Sering digunakan dalam penghapusan pohon karena anak dihapus sebelum parent.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Setiap metode memiliki kompleksitas O(n), mengunjungi semua node sekali. Pemilihan traversal tergantung tujuan, seperti pencetakan data, evaluasi ekspresi, atau kloning pohon.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Penyisipan_Insert_dan_Penghapusan_Delete_Node\"><\/span>Penyisipan (Insert) dan Penghapusan (Delete) Node<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pada <strong>binary search tree (BST)<\/strong>, proses penyisipan memerlukan perbandingan nilai dengan node saat ini: jika lebih kecil, lanjut ke subtree kiri; jika lebih besar, ke subtree kanan. Setelah mencapai posisi null, simpul baru ditempatkan. Kompleksitas rata-rata O(log n), pada kasus terburuk O(n) jika tree tidak seimbang.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Penghapusan node pada BST memiliki tiga kasus:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Leaf node<\/strong>: cukup hapus langsung.<\/li>\n\n\n\n<li><strong>Node dengan satu anak<\/strong>: ganti node dengan anaknya.<\/li>\n\n\n\n<li><strong>Node dengan dua anak<\/strong>: cari penerus inorder (inorder successor) atau predecessor, salin nilainya, lalu hapus penerus tersebut.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Hapus perlu penanganan pointer agar tree tetap valid dan seimbang jika diperlukan.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pencarian_Search_Node\"><\/span>Pencarian (Search) Node<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pencarian pada BST mirip penyisipan: bandingkan kunci dengan root, jika sama, selesai; jika lebih kecil, ke subtree kiri; jika lebih besar, subtree kanan. Kompleksitas rata-rata O(log n). Pada tree tidak terurut atau generic binary tree, pencarian memerlukan traversal lengkap (BFS atau DFS) dengan kompleksitas O(n).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Implementasi_Binary_Tree\"><\/span>Implementasi Binary Tree<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Struktur data binary tree umumnya diimplementasikan menggunakan pointer (bahasa C\/C++) atau referensi objek (Java, Python). Contoh implementasi <strong>bahasa C<\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c decode:true \" >typedef struct Node {\n    int data;\n    struct Node *left;\n    struct Node *right;\n} Node;\n\nNode* createNode(int value) {\n    Node* node = (Node*)malloc(sizeof(Node));\n    node-&gt;data = value;\n    node-&gt;left = node-&gt;right = NULL;\n    return node;\n}<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Pada <strong>Java<\/strong>, kelas Node dan Tree memudahkan penerapan prinsip OOP:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:java decode:true \" >public class Node {\n    int data;\n    Node left, right;\n    public Node(int item) {\n        data = item;\n        left = right = null;\n    }\n}\npublic class BinaryTree {\n    Node root;\n    \/\/ Metode traversal, insert, delete ditambahkan di sini\n}<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Binary tree dan variannya banyak digunakan dalam skenario nyata:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Binary Search Tree (BST)<\/strong>: implementasi struktur data dinamis dengan operasi O(log n).<\/li>\n\n\n\n<li><strong>Min\/Max Heap<\/strong>: basis priority queue dengan operasi ekstrak dan sisip efisien.<\/li>\n\n\n\n<li><strong>Parse Tree<\/strong> dan <strong>Expression Tree<\/strong>: evaluasi ekspresi matematika atau logika.<\/li>\n\n\n\n<li><strong>Huffman Tree<\/strong>: algoritma kompresi data untuk pengodean variabel panjang.<\/li>\n\n\n\n<li><strong>Segment Tree<\/strong> dan <strong>Fenwick Tree<\/strong>: query rentang dan pembaruan data dalam array.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Studi_Kasus_Penggunaan_dalam_Mesin_Pencari\"><\/span>Studi Kasus: Penggunaan dalam Mesin Pencari<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mesin pencari skala besar menggunakan varian pohon seperti <strong>B-Tree<\/strong> dan <strong>Trie<\/strong> untuk menyimpan indeks kata dan metadata dokumen. Struktur ini memungkinkan pencarian kata kunci dengan kompleksitas O(m), m panjang kata, serta memfasilitasi saran otomatis (autocomplete).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Untuk menjaga performa, pertimbangkan:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Menggunakan self-balancing tree (AVL, Red-Black Tree) untuk memastikan ketinggian O(log n).<\/li>\n\n\n\n<li>Memanfaatkan array representation untuk complete binary tree agar pointer tidak diperlukan.<\/li>\n\n\n\n<li>Menerapkan teknik <strong>lazy deletion<\/strong> pada skenario update tinggi untuk menghindari operasi delete yang mahal.<\/li>\n\n\n\n<li>Mengelola <em>memory pool<\/em> untuk alokasi node cepat dan mengurangi fragmentasi.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Kesimpulan\"><\/span>Kesimpulan<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Binary tree adalah fondasi struktur data yang krusial dalam ilmu komputer. Dengan memahami jenis, operasi, serta implementasi, Anda dapat memilih model terbaik untuk aplikasi seperti database, kompresi data, dan algoritma graf. Langkah selanjutnya: mendalami self-balancing trees (<strong>AVL<\/strong>, <strong>Red-Black<\/strong>), pohon B-Tree, dan teknik caching node untuk performa optimal pada data berukuran besar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pengertian Binary Tree Sebuah binary tree adalah struktur data pohon di mana setiap simpul (node) memiliki paling banyak dua anak (child). Anak-kiri disebut left child dan anak-kanan right child. Komponen inti binary tree meliputi: Binary tree sering menjadi landasan bagi struktur yang lebih kompleks seperti binary search tree (BST), heap, pohon AVL, dan pohon B. [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":4305,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[114],"class_list":["post-4256","post","type-post","status-publish","format-standard","has-post-thumbnail","category-informasi","tag-programming"],"_links":{"self":[{"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/posts\/4256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/comments?post=4256"}],"version-history":[{"count":6,"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/posts\/4256\/revisions"}],"predecessor-version":[{"id":4311,"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/posts\/4256\/revisions\/4311"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/media\/4305"}],"wp:attachment":[{"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/media?parent=4256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/categories?post=4256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/focusnic.com\/blog\/wp-json\/wp\/v2\/tags?post=4256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}