subtree itu apa sih? Lalu ada syarat untuk sebuah subtree

Berikut ini adalah pertanyaan dari aryagading pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas

Subtree itu apa sih? Lalu ada syarat untuk sebuah subtree atau gak? Dan apakah gambar ini bisa disebut sebagai "Subtree dari D adalah G"?Lalu apa ada penulisan khusus dari subtree tidak?
Misal:
Apakah yang benar penulisannya adalah "Subtree kiri dari A adalah B, D, G, E, H, J" atau "Subtree kiri dari A adalah B, D, E, G, H, J"?
subtree itu apa sih? Lalu ada syarat untuk sebuah subtree atau gak? Dan apakah gambar ini bisa disebut sebagai

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

  • Subtreeadalahtree yang merupakan bagian (subset) dari tree yang lebih besar. Atau dengan kata lain, subtree adalah himpunan semua simpul/node yang berinduk pada sebuah akar/root.
  • “Subtree dari D adalah G”merupakan pernyataan yangbenar, karena pada binary tree, memungkinan tree tidak memiliki cabang/simpul/node.
  • Kedua cara penulisan subtree kiri dari A merupakan penulisan secara traversal, bukan secara hirarki. Namun begitu, tetap keduanya adalah penulisan subtree yang benar.
    "Subtree kiri dari A adalah B, D, G, E, H, J"adalah penulisan subtree menggunakan metodetraversal preorder.
    Sedangkan “Subtree kiri dari A adalah B, D, E, G, H, J"adalah penulisan subtree menggunakan metodetraversal level order.

Pembahasan

Sesuai definisinya, struktur tree/pohon dalam informatika atau ilmu komputer merupakan kumpulan elemen (node) di mana terdapat satu elemen akar (root), dan elemen lain terbagi menjadi sejumlah himpunan yang disjoin satu sama lainnya, yang disebut cabang.

Sedangkan subtree pada hakikatnya adalah tree, yang merupakan kumpulan node dan cabang-cabangnya di bawah node induk/akarnya.

Pada pertanyaan ini, jenis tree yang dipaparkan adalah binary tree (pohon biner).

Salah satu karakteristik dari binary tree adalah dimungkinkannya sebuah tree tidak mempunyai simpul/node.

Jadi, karakteristik tersebut yang membuat pernyataan “Subtree dari D adalah G” benar. Walaupun G tidak mempunyai simpul/node, G adalah subtree dari D.

Untuk menjelaskan pertanyaan ketiga, saya buat program sederhana dengan bahasa pemrograman Java, dan data tree diisi sesuai dengan gambar pada pertanyaan.

import java.util.*;
class Simpul {
   char info;
   Simpul kiri, kanan;
   // Konstruktor
   public Simpul(char item)
   {
       info = item;
       kiri = kanan = null;
   }
}

// Class PohonBiner
class PohonBiner {
   // Akar pohon biner
   Simpul akar;
   // Konstruktor
   PohonBiner(char info) { akar = new Simpul(info); }
   PohonBiner() { akar = null; }
   // Traversal Postorder
   public String traversalPostorder(Simpul simpul) { }
   // Traversal Inorder
   public String traversalInorder(Simpul simpul) { }
   // Traversal Preorder
// Fungsi rekursif yang mengembalikan hasil
// traversal preorder dalam bentuk string
   public String traversalPreorder(Simpul simpul)
   {
       if (simpul == null)
           return "";
 
       return simpul.info + " "
           + traversalPreorder(simpul.kiri)
           + traversalPreorder(simpul.kanan);
   }
   // Traversal Level Order
// Fungsi iteratif yang mengembalikan hasil
// traversal level order dalam bentuk string
   public String traversalLevelOrder(Simpul simpul)
   {
       String traversalStr = "";
       Queue<Simpul> queue = new LinkedList<Simpul>();
       queue.add(simpul);
       while (!queue.isEmpty()) {
           Simpul tmp = queue.poll();
           traversalStr += tmp.info + " ";
           //System.out.print(tmp.info + " ");
           if (tmp.kiri != null) {
               queue.add(tmp.kiri);
           }
           if (tmp.kanan != null) {
               queue.add(tmp.kanan);
           }
       }
       return traversalStr;
   }
}

// Class program utama
class TestBinaryTree {
   public static void main(String[] args) {
       // Inisialisasi pohon biner dengan akar 'A'
       PohonBiner pohon = new PohonBiner('A');
       // tingkat 1
       pohon.akar.kiri = new Simpul('B');
       pohon.akar.kanan = new Simpul('C');
       // tingkat 2
       pohon.akar.kiri.kiri = new Simpul('D');
       pohon.akar.kiri.kanan = new Simpul('E');
       pohon.akar.kanan.kanan = new Simpul('F');
       // tingkat 3
       pohon.akar.kiri.kiri.kiri = new Simpul('G');
       pohon.akar.kiri.kanan.kiri = new Simpul('H');
       pohon.akar.kanan.kanan.kiri = new Simpul('I');
       // tingkat 4
       pohon.akar.kiri.kanan.kiri.kiri = new Simpul('J');
       pohon.akar.kanan.kanan.kiri.kiri = new Simpul('K');
       pohon.akar.kanan.kanan.kiri.kanan = new Simpul('L');
       // Cetak subtree kiri dari A
       System.out.println("TRAVERSAL PREORDER");
       System.out.print("⇒  Subtree kiri dari A adalah ");
       System.out.println(
           pohon.traversalPreorder(pohon.akar.kiri).trim().replace(" ", ", ")
       );
       System.out.println("TRAVERSAL LEVEL ORDER");
       System.out.print("⇒  Subtree kiri dari A adalah ");
       System.out.println(
           pohon.traversalLevelOrder(pohon.akar.kiri).trim().replace(" ", ", ")
       );
       System.out.println("");
   }
}

Hasil eksekusinya adalah:

TRAVERSAL PREORDER
⇒  Subtree kiri dari A adalah B, D, G, E, H, J
TRAVERSAL LEVEL ORDER
⇒  Subtree kiri dari A adalah B, D, E, G, H, J

(atau dapat dilihat pada gambar yang dilampirkan)
___________________

Detail Jawaban

Mata Pelajaran: Informatika (TIK)
Materi: Algoritma dan Struktur Data - Binary Tree

Subtree adalah tree yang merupakan bagian (subset) dari tree yang lebih besar. Atau dengan kata lain, subtree adalah himpunan semua simpul/node yang berinduk pada sebuah akar/root.“Subtree dari D adalah G” merupakan pernyataan yang benar, karena pada binary tree, memungkinan tree tidak memiliki cabang/simpul/node.Kedua cara penulisan subtree kiri dari A merupakan penulisan secara traversal, bukan secara hirarki. Namun begitu, tetap keduanya adalah penulisan subtree yang benar.

Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Sat, 22 Oct 22