PERTEMUAN 15
Struktur Data dan Algoritma
TREE DAN OPERASI DASAR
🌳
Target
Learning Outcomes

Setelah pertemuan ini mahasiswa mampu:

  • Menjelaskan konsep tree
  • Mengidentifikasi komponen tree
  • Memahami binary tree
  • Melakukan traversal tree
  • Mengimplementasikan tree sederhana
  • Menganalisis penggunaan tree
Review
Review: Queue

Karakteristik Queue:

  • FIFO (First In First Out)
  • Operasi: enqueue(), dequeue()
  • Circular Queue untuk efisiensi

Pertanyaan:

"Mengapa queue disebut struktur data linear?"
Konsep
Linear vs Non-Linear

Struktur Linear

  • Array
  • Linked List
  • Stack
  • Queue
➡️

Struktur Non-Linear

  • Tree
  • Graph
🌿
Motivasi
Tree di Dunia Nyata
📁Folder Komputer
🏢Struktur Organisasi
👪Family Tree
🌐HTML DOM
📱Menu Aplikasi
🤖Decision Tree AI
Visual
Visualisasi Tree

Binary Tree

General Tree

Bukan Tree (Cycle)

Tree adalah struktur hierarki tanpa siklus (cycle) dan setiap node (kecuali root) hanya punya satu parent.

Definisi
Apa Itu Tree?

Tree adalah: Struktur data hierarkis yang terdiri dari node-node yang saling terhubung.

Karakteristik:

  • Memiliki Root (satu node utama di atas)
  • Memiliki hubungan Parent-Child
  • Tidak membentuk Cycle (lingkaran)
Terminologi
Komponen Tree
  • Root: Node paling atas
  • Parent: Node induk (punya anak)
  • Child: Node anak
  • Sibling: Saudara satu parent
  • Leaf: Node tanpa child
  • Internal Node: Node dengan child (bukan root)
Kuis Cepat
Identifikasi Node
  • • Siapa Root?
  • • Siapa Sibling dari B?
  • • Mana Leaf Node?
  • • Mana Subtree?
Jawaban
Jawaban Identifikasi
  • Root: Node A
  • Sibling B: Node C
  • Leaf Nodes: D, E, F
  • Subtree: Node B beserta anak-anaknya (D, E)
Konsep Lanjut
Level, Depth, & Height
Depth: Jarak dari Root ke Node.
Height: Jarak terjauh dari Node ke Leaf.
Efisiensi
Mengapa Menggunakan Tree?
Pencarian Cepat: Membagi ruang pencarian (logaritmik).
🗄️Hierarki: Merepresentasikan hubungan data secara alami.
🔄Dinamis: Mudah menambah/menghapus cabang.

"Searching pada data linear = O(N), pada tree yang seimbang = O(log N)."

Tipe Utama
Binary Tree

Jenis tree yang paling umum digunakan dalam pemrograman.

Setiap node maksimal memiliki:
  • 1 Left Child
  • 1 Right Child
🧬
Visual
Visualisasi Binary Tree

Binary Tree

Setiap node maksimal 2 anak.

General Tree (Bukan Binary)

Node bisa memiliki lebih dari 2 anak.

Variasi
Jenis Binary Tree

Full

Setiap node punya 0 atau 2 anak.

Complete

Level terakhir terisi dari kiri.

Skewed

Miring ke satu sisi.

Implementasi
Struktur Node pada C++
struct Node {
    char data;
    Node* left;
    Node* right;
};
Sama seperti Linked List, tapi dengan dua penunjuk arah.
Implementasi
Membuat Node Baru
Node* newNode(char value) {
    Node* node = new Node();
    node->data = value;
    node->left = NULL;
    node->right = NULL;

    return node;
}
Implementasi
Membentuk Tree
root = newNode('A');

root->left = newNode('B');
root->right = newNode('C');
  A
 /  \
B    C
Traversal
Apa itu Traversal?
Traversal: Proses mengunjungi semua node pada tree tepat satu kali.

3 Jenis Utama:

1️⃣Preorder (Root → Left → Right)
2️⃣Inorder (Left → Root → Right)
3️⃣Postorder (Left → Right → Root)
Traversal
Preorder Traversal

Root → Left → Right

Hasil:
Traversal
Inorder Traversal

Left → Root → Right

Hasil:
Traversal
Postorder Traversal

Left → Right → Root

Hasil:
Kode
Recursive Traversal
void preorder(Node* root) {
    if (root != NULL) {
        cout << root->data << " "; // ROOT
        preorder(root->left);      // LEFT
        preorder(root->right);     // RIGHT
    }
}
Mekanisme
Visualisasi Call Stack

Call Stack

Hasil Traversal (Preorder):
Output
Demo Output
Preorder : A B C
Inorder : B A C
Postorder : B C A
Unduh Kode Lengkap
Latihan
Latihan Kelompok
  1. Tentukan hasil Preorder, Inorder, Postorder
  2. Sebutkan semua Leaf Node
  3. Tentukan Height dari tree tersebut
Tipe Khusus
Binary Search Tree (BST)

Struktur data yang menggabungkan efisiensi Binary Search dengan fleksibilitas Linked List.

Aturan Utama (BST Property):
  • Semua node di Subtree Kiri < Root
  • Semua node di Subtree Kanan > Root
  • Berlaku secara rekursif untuk setiap node.
TIP
Hasil Inorder Traversal pada BST akan selalu menghasilkan data yang terurut!
Simulasi
Visualisasi BST
Klik Tambah Acak untuk memulai!
Kode
Operasi BST (C++)

Searching

Node* search(Node* root, int key) {
    if (root == NULL || root->data == key)
        return root;

    if (key < root->data)
        return search(root->left, key);

    return search(root->right, key);
}

Insertion

Node* insert(Node* node, int key) {
    if (node == NULL) return newNode(key);

    if (key < node->data)
        node->left = insert(node->left, key);
    else if (key > node->data)
        node->right = insert(node->right, key);

    return node;
}
Aplikasi
Kapan Menggunakan Tree?
🌿Data Hierarkis: Folder, Organisasi, DOM.
🔍Pencarian Cepat: Dataset besar yang sering dicari.
🌳Data Bercabang: Game AI, Decision Tree.
Ringkasan
Integrasi Struktur Data
Struktur Data Karakteristik
ArrayCepat akses index, statis
Linked ListFleksibel, dinamis
StackLIFO (Undo, Back)
QueueFIFO (Antrean, Buffer)
TreeHierarki, Cepat Cari
Refleksi
Perjalanan Satu Semester
Pointer Array Struct Linked List Searching Sorting Stack Queue Tree

Anda telah menguasai fondasi ilmu komputer!

Persiapan
Menghadapi UAS
  • Pahami Konsep, bukan hafalan kode
  • Latihan Tracing algoritma di kertas
  • Pahami kapan harus menggunakan struktur data tertentu
  • Gunakan logika, bukan intuisi semata
Tutup
Terima Kasih
"Choosing the right data structure is choosing the right way to think about data."
🚀