fbpx

Struktur Data : Implementasi Tree Tranversalย dalam Bahasa C

Pada artikel kali ini akan dibahas mengenai implementasi tree tranversal dalam bahasa C. Penasaran kan bagaimana cara menghubungkan antar sub tree dan root-nya? Yuk disimak ulasannya.


Pre-Order (Root, Left, Right)

void displayPreorder(struct node* node)
{
    if (node == NULL)
        return;

    printf("%d ", node->data); //root
    displayPreorder(node->left); //subtree kiri
    displayPreorder(node->right); //subtree kanan
}

In-Order (Left, Root, Right)

void displayInorder(struct node* node)
{
    if (node == NULL)
        return;

    displayInorder(node->left); //subtree kiri
    printf("%d ", node->data); //akar
    displayInorder(node->right); //subtree kanan
}

Post-Order (Left, Right, Root)

void displayPostorder(struct node* node)
{
    if (node == NULL)
        return;

    displayPostorder(node->left); //subtree kiri
    displayPostorder(node->right); //subtree kanan
    printf("%d ", node->data); //root
}

Sorce Code Lengkap

Misalkan akan dibuat Tree seperti gambar di atas. Output urutan yang diinginkan adalah sebagai berikut

  • In-Order : 25 15 10 4 12 22 18 24 50 35 31 44 70 90
  • Pre-Order : 25 15 10 4 12 22 18 24 50 35 31 44 70 90
  • Post-Order : 4 12 10 18 24 22 15 31 44 35 90 70 50 25
#include <stdio.h>

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

struct node* newNode(int data)
{
    struct node* node = (struct node*)malloc(sizeof(struct node));

    node->data = data;
    node->left = NULL;
    node->right = NULL;

    return(node);
};

void displayPreorder(struct node* node)
{
    if (node == NULL)
        return;

    printf("%d ", node->data); //root
    displayPreorder(node->left); //subtree kiri
    displayPreorder(node->right); //subtree kanan
}

void displayInorder(struct node* node)
{
    if (node == NULL)
        return;

    displayInorder(node->left); //subtree kiri
    printf("%d ", node->data); //akar
    displayInorder(node->right); //subtree kanan
}

void displayPostorder(struct node* node)
{
    if (node == NULL)
        return;

    displayPostorder(node->left); //subtree kiri
    displayPostorder(node->right); //subtree kanan
    printf("%d ", node->data); //root
}

int main()
{
    struct node *root = newNode(25);

    root->left = newNode(15);
    root->right = newNode(50);
    root->left->left = newNode(10);
    root->left->right = newNode(22);
    root->right->left = newNode(35);
    root->right->right = newNode(70);
    root->left->left->left = newNode(4);
    root->left->left->right = newNode(12);
    root->left->right->left = newNode(18);
    root->left->right->right = newNode(24);
    root->right->left->left = newNode(31);
    root->right->left->right = newNode(44);
    root->right->right->left - newNode(66);
    root->right->right->right = newNode(90);

    printf("\nIsi dari binary tree (Pre-Order) adalah \n");
    displayPreorder(root);

    printf("\nIsi dari binary tree (In-Order) adalah \n");
    displayInorder(root);

    printf("\nIsi dari binary tree (Post-Order) adalah \n");
    displayPostorder(root);

    return 0;
}

Ouput yang dihasilkan sama dengan yang telah dituliskan sebelumnya


Materi Lengkap

Silakan baca juga beberapa artikel menarik kami tentang Tree (Bagian 1), daftar lengkapnya adalah sebagai berikut.


Tonton juga video pilihan dari kami berikut ini

Bagikan ke teman-teman Anda

Contact Us

How to whitelist website on AdBlocker?

How to whitelist website on AdBlocker?

  1. 1 Click on the AdBlock Plus icon on the top right corner of your browser
  2. 2 Click on "Enabled on this site" from the AdBlock Plus option
  3. 3 Refresh the page and start browsing the site
error: Content is protected !!
Up