Implementasi Tree
Tugas Pertemuan ke-11
Di bawah ini adalah dokumentasi code-code beserta penjelasannya tentang NON-LINEAR TREE (FILE SYSTEM).
PROGRAM IMPLEMENTASI FILE SYSTEM TREE DAN ALGORITMA TRAVERSAL
Program ini mengimplementasikan struktur data Tree umum (N-ary Tree) untuk mensimulasikan sistem direktori atau folder pada komputer. Berbeda dengan Binary Tree biasa, setiap folder (node) di dalam program ini dapat memiliki banyak cabang sekaligus (menggunakan bantuan vector). Program ini mendemonstrasikan bagaimana sebuah folder disusun secara hierarkis serta cara menelusurinya.
Output:
|-- Root
|-- Documents
|-- College
|-- Assignments
|-- Pictures
|-- Music
Preorder Traversal: Root Documents College Assignments Pictures Music
Postorder Traversal: College Assignments Documents Pictures Music Root
Program ini mendemonstrasikan pembuatan simulasi manajemen direktori komputer menggunakan pohon berakar (Rooted Tree). Elemen utama yang digunakan adalah struct Folder yang menyimpan nama folder, pointer ke induknya (parent), dan sebuah dinamik array (vector<Folder*>) untuk menampung seluruh anak-anak foldernya secara fleksibel. Penelusuran struktur dilakukan dengan metode visual displayTree untuk mencetak struktur folder bertingkat, serta mengaplikasikan algoritma Preorder (Kunjungi folder, lalu telusuri isinya) dan Postorder (Selesaikan semua sub-folder terbawah, baru kembali ke folder induk).
📂 Mengapa Belajar Tree Melalui Sistem Folder Itu Paling Gampang?
Saat pertama kali belajar struktur data Tree, kebanyakan dari kita langsung disuguhkan rumus matematika atau pohon biner yang kaku. Padahal, sadar atau tidak, setiap hari kita menggunakan Tree saat membuka laptop atau HP!
Ya, sistem folder (direktori) di Windows Explorer atau macOS Finder adalah contoh nyata dari penerapan struktur data Tree di kehidupan nyata.
🪵 Analogi Sederhana Komponen Tree
Mari kita bedah kode FileSystemTree.cpp di atas menggunakan bahasa sehari-hari melalui visualisasi hierarki berikut:
[Root]
/ | \
[Docs] [Pics] [Music]
/ \
[Coll] [Asg]
- Root (Akar): Ini adalah folder induk tertinggi. Di Windows biasanya disebut
C:atauD:, sedangkan di kode kita diberi nama"Root". - Node (Simpul): Setiap folder yang kita buat (
Documents,Pictures,Music) disebut sebagai Node. - Children (Anak): Folder yang berada di dalam folder lain. Contohnya:
CollegedanAssignmentsadalah anak dari folderDocuments. - Parent (Induk): Folder
Documentsadalah induk langsung dari folderCollege.
🧠Rahasia Di Balik Preorder dan Postorder Traversal
Traversal itu bahasa keren dari "cara kita berjalan-jalan keliling folder". Di kode tadi, ada dua cara jalan-jalan yang hasilnya berbeda total:
1. Preorder Traversal (Cetak Dulu, Baru Masuk)
Cara kerja Preorder adalah mendatangi foldernya dulu, mencetak namanya, baru melihat apa saja isi di dalamnya.
- Bayangkan seperti: Anda sedang melakukan inspeksi gedung sekolah. Anda catat dulu nama ruangannya di papan klip, baru Anda masuk melihat isinya.
- Hasil di kode:
Root ➔ Documents ➔ College ➔ Assignments ➔ Pictures ➔ Music
2. Postorder Traversal (Masuk Paling Dalam, Baru Cetak saat Keluar)
Cara kerja Postorder terbalik. Program dipaksa menyelam ke folder paling ujung/dalam yang sudah tidak punya sub-folder lagi, baru mencetak namanya sambil berjalan mundur ke arah pulang (Root).
- Bayangkan seperti: Anda sedang menghapus folder (Delete). Sistem operasi tidak akan bisa menghapus folder
Documentskalau di dalamnya masih ada folder isi. Sistem harus menghapusCollegedanAssignmentsdulu sampai kosong, baru folderDocumentsbisa ikut terhapus dengan aman. - Hasil di kode:
College ➔ Assignments ➔ Documents ➔ Pictures ➔ Music ➔ Root
💡 Mengapa Kode Ini Menggunakan Vector, Bukan Left/Right?
Pada struktur Binary Tree tradisional, satu node cuma boleh punya maksimal 2 anak (Kiri dan Kanan saja). Tapi di komputer asli, kita bebas membuat puluhan folder di dalam satu folder tunggal, bukan?
Itulah mengapa kode di atas menggunakan perintah vector<Folder*> children. Karena sifat vector di C++ itu dinamis, folder kita bisa menyimpan anak sebanyak apa pun tanpa terpatok batasan kuota cabang!
Comments
Post a Comment