Latihan: Detektif Pohon
Mengimplementasikan fungsi rekursif untuk mencari data spesifik di seluruh pohon dan di ujung daun, serta melacak kedalamannya (Level).
Mengimplementasikan fungsi rekursif untuk mencari data spesifik di seluruh pohon dan di ujung daun, serta melacak kedalamannya (Level).
Daftar karyawan perusahaan tidak lagi disimpan dalam buku catatan berbaris rapi (Array), melainkan sudah dipetakan ke dalam struktur hierarki kepemimpinan (Tree). CEO ingin Anda membuat mesin pencari yang bisa menjawab tiga jenis pertanyaan:
Kamu diminta melengkapi ketiga fungsi rekursif pencarian berikut :
SearchTree (Pencarian Umum): Berhenti jika pohon kosong. Gunakan operator logika || (OR) saat melakukan pencarian di kiri dan kanan. Jika sudah ketemu di satu sisi, sisi lain tidak perlu diperiksa.SearchDaun (Pencarian Staf Lapangan): Berhenti ketika simpul saat ini adalah daun (IsTreeOneElmt). Hati-hati, jika ia bukan daun, kamu harus menggunakan predikat bantuan untuk menelusuri ke arah yang benar.Level (Pencarian Tingkatan): Berhenti jika simpul saat ini sama dengan nilai yang dicari. Jika tidak, gunakan bantuan fungsi SearchTree untuk menentukan apakah target ada di cabang kiri atau kanan, lalu tambahkan levelnya dengan 1.Program akan mencetak status penemuan data dan angka tingkat jabatan berdasarkan pohon hierarki yang disimulasikan.
Berdasarkan struktur pohon pada kode, 'E' dan 'F' adalah daun, sedangkan 'C' adalah pimpinan (punya bawahan 'F'). Karyawan 'E' berada di kedalaman tingkat ke-3 (A -> B -> E).
Output:
=== PENCARIAN KESELURUHAN (DETEKTIF POHON) ===
Cari karyawan 'E' : Ditemukan
Cari karyawan 'Z' : Tidak
Cari 'C' di posisi Staf Lapangan (Daun) : Bukan
Cari 'F' di posisi Staf Lapangan (Daun) : Ya
Jabatan 'E' berada di Level : 3Hint: Pencarian Level
FungsiLevelbekerja dengan cara mengakumulasi nilai. Ketika kamu melangkah ke satu tingkat di bawah, kamu mengirimkan "pesan" kembali ke atas dengan menambahkan nilai 1. Hasil akhirnya adalah jarak total dari Akar menuju simpul target.