Páginas


Thursday 12 December 2013


Tree




1. Struktur Data
Struktur data adalah cara menyimpan atau merepresentasikan data didalam komputer agar bisa dipakai secara efisien. Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol.

Secara garis besar type data dapat dikategorikan menjadi:
Type data sederhana.
  • Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter.
  • Type data sederhana majemuk, misalnyaString
Struktur Data, meliputi:
  • Struktur data sederhana, misalnya array dan record.
  • Struktur data majemuk, yang terdiri dari:
Linier : Stack, Queue, sertaList dan Multilist
Non Linier : Pohon Biner dan Graph

Pemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.

2. Implementasi Pohon Biner dalam bahasa C

Algoritma Sorting Pohon Biner Biasa :



Algoritma Sorting Pohon Biner Terurut :






3. Algoritma Travelsar

 a. PREORDER


Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
-  Cetak isi simpul yang dikunjungi.
-  Kunjungi cabang kiri.
-  Kunjungi cabang kanan.
Prosedur untuk melakukan traversal secara PREORDER adalah sebagai berikut:





http://sumbersinau.files.wordpress.com/2013/04/b35.jpg

   b. INORDER

Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
-  Kunjungi cabang kiri.
-  Cetak isi simpul yang dikunjungi.
-  Kunjungi cabang kanan.
Prosedur untuk melakukan traversal secara INORDER adalah sebagai berikut:





Gambar


     c. POSTORDER
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
-  Kunjungi cabang kiri.
-  Kunjungi cabang kanan.
-  Cetak isi simpul yang dikunjungi

BERIKUT MERUPAKN CONTOH PROGRAMNYA

#include<stdio.h>//header file
#include<conio.h>
/* Deklarasi struct */
typedef struct Node{
      int data;    //data pada tree
      Node *kiri;  //penunjuk node anak kiri
      Node *kanan; //penunjuk node anak kanan
};
/* Fungsi untuk memasukkan data ke dalam tree */
void tambah(Node **root, int databaru){
      if((*root) == NULL){       //jika pohon/subpohon masih kosong
            Node *baru;//node “baru” dibentuk…
            baru = new Node;//berdasarkan struct “Node”
            baru->data = databaru; //data node baru diisi oleh variabel databaru
            baru->kiri = NULL;//penunjuk kiri node baru masih kosong
            baru->kanan = NULL;//penunjuk kanan node baru masih kosong
            (*root) = baru; //node pohon (root) diletakkan pada node baru
            (*root)->kiri = NULL;//penunjuk kiri node root masih kosong
            (*root)->kanan = NULL; //penunjuk kanan node root masih kosong
            printf(“Data bertambah!”);
      }
      else if(databaru < (*root)->data)//jika databaru kurang dari data node root…
            tambah(&(*root)->kiri, databaru);//tambahkan databaru pada subpohon kiri
      else if(databaru > (*root)->data)//jika databaru lebih dari data node root…
            tambah(&(*root)->kanan, databaru); //tambahkan databaru pada subpohon kanan
      else if(databaru == (*root)->data)//jika databaru sama dengan data node root
            printf(“Data sudah ada!”);//databaru tidak dapat ditambahkan pada tree
}
/* Fungsi untuk menampilkan data secara pre-order
   (data ditampilkan dari node induk, node anak kiri, lalu node anak kanan)
*/
void preOrder(Node *root){
      if(root != NULL){//jika pohon/subpohon tidak kosong
            printf(“%d “, root->data);//menampilkan data node yang dikunjungi
      preOrder(root->kiri);//mengunjungi node anak kiri
      preOrder(root->kanan); //mengunjungi node anak kanan
      }
}
/* Fungsi untuk menampilkan data secara in-order
   (data ditampilkan dari node anak kiri, node induk, lalu node anak kanan)
*/
void inOrder(Node *root){
      if(root != NULL){//jika pohon/subpohon tidak kosong…
      inOrder(root->kiri);//mengunjungi node anak kiri
      printf(“%d “, root->data);//menampilkan data node yang dikunjungi
      inOrder(root->kanan);//mengunjungi node anak kanan
      }
}
             
/* Fungsi untuk menampilkan data secara post-order
   (data ditampilkan dari node anak kiri, node anak kanan, lalu node induk)
*/
void postOrder(Node *root){
     if(root != NULL){//jika pohon/subpohon tidak kosong
     postOrder(root->kiri); //mengunjungi node anak kiri
     postOrder(root->kanan);//mengunjungi node anak kanan
     printf(“%d “, root->data); //menampilkan data node yang dikunjungi
     }
}
main(){
     int pil, c;
     Node *pohon, *t;
     pohon = NULL;
     do{
           int data;
           printf(“MENU\n”);
           printf(“1. Tambah\n”);
           printf(“2. Lihat Pre-Order\n”);
           printf(“3. Lihat In-Order\n”);
           printf(“4. Lihat Post-Order\n”);
           printf(“5. Exit\n”);
           printf(“Pilihan : “); scanf(“%d”, &pil);
           switch(pil){
           case 1 :
                printf(“Data baru : “);
                scanf(“%d”, &data);
                tambah(&pohon, data);
                break;
           case 2 :
                if(pohon != NULL)
                     preOrder(pohon);
                else
                     printf(“Masih kosong!”);
                break;
           case 3 :
                if(pohon != NULL)
                     inOrder(pohon);
                else
                      printf(“Masih kosong!”);
                break;
           case 4 :
                if(pohon != NULL)
                     postOrder(pohon);
                else
                     printf(“Masih kosong!”);
                break;
           }
           getch();
           printf(“\n”);
     }
     while(pil != 5);
}
HASIL
Gambar

Gambar
Selengkapnya...