Struktur Data - Tree
Nama : Aga Nafta Filadelfiano
NRP : 5025251055
Kelas : Struktur Data (D)
Kelas : Struktur Data (D)
Tree
Definisi Tree
Tree adalah struktur data non-linear yang berbentuk hierarki dan terdiri dari kumpulan elemen yang disebut node. Setiap node dalam tree dihubungkan oleh garis yang disebut edge, yang bisa bersifat terarah maupun tidak terarah.
Keunggulan Tree
- Struktur non-linear → lebih fleksibel
- Penyimpanan data lebih efisien
- Akses data lebih cepat
- Manipulasi data lebih optimal
- Mendukung teknik traversal seperti, preorder, inorder, postorder
Syntax Program:
Output:
struct Node { ... };Mendefinisikan struktur sebuah node dalam pohon.
char dataMenyimpan nilai dengan variabel char.
Node* left & Node* rightSebagai penunjuk (pointer) ke anak sebelah kiri dan kanan.
Node(char val)Constructor untuk mempermudah pembuatan node baru. Saat node dibuat, anak kiri dan kanannya otomatis diset kosong (
NULL).Preorder (Root -> Left -> Right)
void preorder(Node* root) {
if (root == NULL) return; // Dasar rekursi: jika kosong, berhenti
cout << root->data << " "; // Cetak data sekarang
preorder(root->left); // Rekursi ke kiri
preorder(root->right); // Rekursi ke kanan
}
Inorder (Left -> Root -> Right)
void inorder(Node* root) {
if (root == NULL) return;
inorder(root->left); // Rekursi ke kiri dulu sampai mentok
cout << root->data << " "; // Cetak data
inorder(root->right); // Rekursi ke kanan
}
Postorder (Left -> Right -> Root)
void postorder(Node* root) {
if (root == NULL) return;
postorder(root->left); // Selesaikan semua anak kiri
postorder(root->right); // Selesaikan semua anak kanan
cout << root->data << " "; // Terakhir cetak data root-nya
}
queue<Node*> q;
Membuat antrean untuk menyimpan alamat node.
q.push(root);
Memasukkan akar pertama ke antrean.
while (!q.empty())
Selama antrean tidak kosong, ambil node terdepan, cetak, lalu masukkan anak-anaknya
ke dalam antrean untuk diproses berikutnya.Source Code: GitHub