0% menganggap dokumen ini bermanfaat (0 suara)
236 tayangan11 halaman

Tree Dalam Struktur Data

Tree adalah struktur data non-linier yang menyimpan data secara hierarkis, memungkinkan akses dan manipulasi data yang efisien. Terdapat berbagai jenis tree, seperti Binary Search Tree, Heap, dan Trie, masing-masing dengan fungsi khusus untuk pencarian, penyimpanan, dan evaluasi. Traversal tree dapat dilakukan dengan metode seperti Preorder, Inorder, dan Postorder, yang digunakan dalam berbagai aplikasi seperti sistem file, evaluasi ekspresi matematika, dan kecerdasan buatan.

Diunggah oleh

Han's
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
236 tayangan11 halaman

Tree Dalam Struktur Data

Tree adalah struktur data non-linier yang menyimpan data secara hierarkis, memungkinkan akses dan manipulasi data yang efisien. Terdapat berbagai jenis tree, seperti Binary Search Tree, Heap, dan Trie, masing-masing dengan fungsi khusus untuk pencarian, penyimpanan, dan evaluasi. Traversal tree dapat dilakukan dengan metode seperti Preorder, Inorder, dan Postorder, yang digunakan dalam berbagai aplikasi seperti sistem file, evaluasi ekspresi matematika, dan kecerdasan buatan.

Diunggah oleh

Han's
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Apa Fungsi Tree dalam Struktur Data?

Tree digunakan untuk menyimpan data secara hierarkis dan memungkinkan


akses, pencarian, dan manipulasi data yang efisien. Berbeda dengan struktur data
linier (seperti array atau linked list), tree menawarkan fleksibilitas dan efisiensi yang
jauh lebih tinggi untuk berbagai kebutuhan.

Fungsi Utama Tree (Secara Umum)


Fungsi Penjelasan
Tree digunakan untuk menyusun data yang memiliki struktur
1. Representasi Hierarki bertingkat (hierarki), seperti folder, organisasi, atau ekspresi
matematika.
Struktur seperti Binary Search Tree (BST) memungkinkan
2. Pencarian dan
pencarian data dalam waktu log(n), jauh lebih cepat dari array
Pengurutan Cepat
biasa.
3. Efisiensi dalam Tree menghemat ruang dan waktu akses, terutama dalam heap,
Penyimpanan dan Akses trie, dan AVL tree.
4. Navigasi dan Digunakan dalam AI, game, dan algoritma yang memerlukan
Pengambilan Keputusan penelusuran pilihan secara sistematis.
Tree digunakan oleh compiler/interpreter untuk mengevaluasi
5. Parsing dan Kompilasi
ekspresi, menyusun syntax (syntax tree).
📂 Fungsi Tree Berdasarkan Jenisnya
1. Binary Search Tree (BST)

• Digunakan untuk: pencarian cepat, penyisipan, dan penghapusan.


• Fungsi utama: Menyimpan data secara terurut dan mendukung search, insert,
delete dalam waktu logaritmik (O(log n) jika seimbang).
• Contoh: Dictionary Python, database index.

2. Heap (Min-Heap / Max-Heap)

• Digunakan untuk: prioritas tinggi.


• Fungsi utama: Menyimpan data yang prioritas tertinggi atau terendah selalu di
atas.
• Contoh: Scheduler proses, algoritma Dijkstra, antrean prioritas.

3. Trie (Prefix Tree)

• Digunakan untuk: pencarian string / autocompletion.


• Fungsi utama: Menyimpan kumpulan string dengan efisiensi memori tinggi
dan pencarian cepat berdasarkan prefix.
• Contoh: Kamus, search engine, autocomplete di Google.

4. AVL Tree / Red-Black Tree

• Digunakan untuk: Menjaga keseimbangan BST.


• Fungsi utama: Menjamin bahwa operasi BST tetap O(log n) meskipun
data diinput secara tidak terurut.
• Contoh: Banyak digunakan di library standar (Java TreeMap, C++ STL
map/set).
Apa itu Tree dalam Struktur Data?

Tree adalah struktur data non-linier yang menyerupai struktur hierarki seperti pohon keluarga,
sistem folder, atau organisasi.
Berbeda dengan array atau linked list yang bersifat linear, tree memungkinkan hubungan
hierarkis antar elemen (node).

Terminologi Penting
Istilah Penjelasan
Node Elemen atau simpul dari tree
Root Node paling atas dalam tree (hanya satu)
Edge Garis penghubung antara dua node
Child Node yang berasal dari node lain (anak)
Parent Node yang memiliki child
Leaf Node yang tidak memiliki child
Subtree Tree bagian dari tree lebih besar
Depth Jarak dari root ke node tertentu
Height Jarak dari node ke daun terdalam

Jenis-Jenis Tree
a. Tree Umum (General Tree)
• Tidak dibatasi jumlah anak per node.
b. Binary Tree
• Maksimal 2 anak per node (left dan right).
• Digunakan sebagai dasar banyak struktur lanjutan seperti BST, heap, dll.
c. Full Binary Tree
• Semua node memiliki 0 atau 2 anak.
d. Complete Binary Tree
• Semua level penuh kecuali level terakhir yang terisi dari kiri ke kanan.
e. Balanced Tree
• Tree dengan tinggi minimum untuk jumlah node tertentu.
Representasi Pohon di Python

class Node:
def __init__(self, data):
[Link] = data
[Link] = None
[Link] = None

Contoh membetuk struktur pohon


# A
# /\
# B C
# /\
# D E

root = Node('A')
[Link] = Node('B')
[Link] = Node('C')
[Link] = Node('D')
[Link] = Node('E')

Traversal Pohon
Traversal adalah proses mengunjungi semua node dalam tree.

Preorder (Root → Left → Right)


Cocok untuk mencetak struktur atau membuat salinan pohon.
python

def preorder(node):
if node:
print([Link])
preorder([Link])
preorder([Link])
Inorder (Left → Root → Right)
Cocok untuk pohon binary search tree (BST) agar hasilnya terurut.
python

def inorder(node):
if node:
inorder([Link])
print([Link])
inorder([Link])

Postorder (Left → Right → Root)


Cocok untuk menghapus pohon atau evaluasi ekspresi.
python

def postorder(node):
if node:
postorder([Link])
postorder([Link])
print([Link])

Perbandingan Traversal
Traversal Urutan Kunjungan Kegunaan
Preorder Root → Left → Right Salin struktur pohon
Inorder Left → Root → Right Mendapatkan data terurut di BST
Postorder Left → Right → Root Menghapus pohon dari bawah

Latihan dan Aplikasi


Latihan Coding:
Buat tree berikut dan lakukan traversal:
markdown

1
/\
2 3
/\
4 5
1. File System Komputer (Folder & Subfolder)
Penjelasan:
Struktur folder di komputer (Windows, Linux, MacOS) diatur dalam bentuk tree:
• Root folder → Subfolder → File
Traversal:
• Preorder digunakan untuk mencetak atau mengakses isi folder secara berurutan.
• Contoh:
o Folder D: berisi Dokumen, Foto, dan Musik
o Dokumen punya subfolder Tugas dan Skripsi
plaintext
D:
├── Dokumen
│ ├── Tugas
│ └── Skripsi
├── Foto
└── Musik

Implementasi nyata:
• Ketika kamu klik “expand all” di file explorer.
• Ketika sistem backup menyalin semua isi drive.

2. Evaluasi Ekspresi Matematika (Expression Tree)


Penjelasan:
Tree bisa digunakan untuk menyimpan ekspresi matematika, seperti:
scss
CopyEdit
(3 + 5) * (2 - 1)
Direpresentasikan sebagai pohon:
markdown

*
/ \
+ -
/\ /\
3 52 1
Traversal:
• Postorder cocok untuk evaluasi, karena:
o Kunjungi operand dulu (3, 5), baru operator (+), dst.
Implementasi nyata:
• Compiler bahasa pemrograman
• Kalkulator digital
• Interpreter dalam Python, JavaScript, dll

3. Database Hierarki (Contoh: XML/JSON)


Penjelasan:
Format data seperti XML atau JSON memiliki struktur nested (bertumpuk), yang mirip dengan
tree.
Contoh JSON:
json

{
"user": {
"name": "Ali",
"address": {
"city": "Jakarta",
"zip": "12345"
}
}
}

Traversal:
• Preorder atau Inorder digunakan untuk membaca atau menulis ulang struktur
JSON/XML.
• Library seperti json di Python menggunakan traversal internal.
Implementasi nyata:
• API komunikasi (REST)
• Konfigurasi sistem
• Data storage seperti MongoDB

4. Kecerdasan Buatan: Game AI (Decision Tree)


Penjelasan:
AI pada game sering menggunakan Decision Tree untuk memutuskan aksi:
Contoh:
nginx
CopyEdit
Apakah musuh terlihat?

Apakah musuh terlihat?


├── Ya → Apakah HP rendah?
│ ├── Ya → Lari
│ └── Tidak → Serang
└── Tidak → Jelajahi area
Traversal:
• Traversal digunakan untuk menelusuri node keputusan dari atas ke bawah.
Implementasi nyata:
• Game seperti PUBG, Mobile Legends, FIFA
• Sistem rekomendasi
• AI Chatbot sederhana

Kesimpulan
Traversal pada tree bukan sekadar teori, tapi dipakai dalam:
• Sistem operasi
• Bahasa pemrograman
• Database & web
• AI dan game
Contoh program

# Definisi node pohon


class Node:
def __init__(self, data):
[Link] = data
[Link] = None
[Link] = None

# Traversal Preorder: Root -> Left -> Right


def preorder(node):
if node:
print([Link], end=' ')
preorder([Link])
preorder([Link])

# Traversal Inorder: Left -> Root -> Right


def inorder(node):
if node:
inorder([Link])
print([Link], end=' ')
inorder([Link])

# Traversal Postorder: Left -> Right -> Root


def postorder(node):
if node:
postorder([Link])
postorder([Link])
print([Link], end=' ')

# Membangun tree
# A
# /\
# B C
# /\ \
# D E F

root = Node('A')
[Link] = Node('B')
[Link] = Node('C')
[Link] = Node('D')
[Link] = Node('E')
[Link] = Node('F')
# Menampilkan hasil traversal
print("Preorder traversal:")
preorder(root)

print("\nInorder traversal:")
inorder(root)

print("\nPostorder traversal:")
postorder(root)

Anda mungkin juga menyukai