Modul 12. Tree Data Structure - fzl-22/modul-alstrukdat-informatika GitHub Wiki

Pengertian

Tree adalah Kumpulan node yang saling terhubung satu sama lain dalam suatu kesatuan yang membentuk layakya struktur sebuah pohon. Seperti pohon, tree data structure memiliki akar, batang/cabang, daun yang saling terhubung namun dalam struktur ini disebut root, parents dan child.

Gambaran Tree Data Structure

image

Macam - Macam Traversal Pohon

Terdapat 3 macam traversal pohon yang ada pada konsep Tree Data Structure, Seperti Berikut ini :

Traversal Pre-order

Cara kerja fungsi Traversal Pre-order adalah sebagai berikut :

  1. Kunjungi simpul akar / node
  2. Lakukan traversal subpohon kiri
  3. Lakukan traversal subpohon kanan

Traversal In-order

Cara kerja fungsi Traversal In-order adalah sebagai berikut :

  1. Lakukan traversal subpohon kiri
  2. Kunjungi simpul akar / node
  3. Lakukan traversal subpohon kanan

Traversal Post-order

Cara kerja fungsi Traversal Post-order adalah sebagai berikut :

  1. Lakukan traversal subpohon kiri
  2. Lakukan traversal subpohon kanan
  3. Kunjungi simpul akar / node

Implementasi

Berikut ini implementasi konsep Tree Data Structure dalam bahasa C :

Menginisiasi Node

#include <stdio.h>
#include <stdlib.h>

struct node
{
    int item;
    struct node *left;
    struct node *right;
};

Fungsi Menambahkan Node

struct node *createNode(int value)
{
    struct node *newNode = malloc(sizeof(struct node));
    newNode->item = value;
    newNode->left = NULL;
    newNode->right = NULL;

    return newNode;
};

Fungsi Insert Left

struct node *insertLeft(struct node *root, int value)
{
    root->left = createNode(value);
    return root->left;
};

Fungsi Insert Right

struct node *insertRight(struct node *root, int value)
{
    root->right = createNode(value);
    return root->right;
};

Fungsi In-Order Traversal

void inorderTraversal(struct node *root){
    if (root == NULL)
    {
        return;
    }
    inorderTraversal(root->left);
    printf("%d -> ", root->item);
    inorderTraversal(root->right);
}

Fungsi Pre-Order Traversal

void preorderTraversal(struct node *root){
    if (root == NULL)
    {
        return;
    }
    printf("%d -> ", root->item);
    preorderTraversal(root->left);
    preorderTraversal(root->right);
}

Fungsi Post-Order Traversal

void postorderTraversal(struct node *root){
    if (root == NULL)
    {
        return;
    }
    postorderTraversal(root->left);
    postorderTraversal(root->right);
    printf("%d -> ", root->item);
}

Main Program

int main(){
    struct node *root = createNode(1);
    insertLeft(root, 12);
    insertRight(root, 9);

    insertRight(root->left, 5);
    insertLeft(root->right, 6);

    printf("Inorder Traversal \n");
    inorderTraversal(root);

    printf("\nPreorder Traversal \n");
    preorderTraversal(root);

    printf("\nPostorder Traversal \n");
    postorderTraversal(root);
}
⚠️ **GitHub.com Fallback** ⚠️