laporan praktikum resmi tree

Upload: unggulbudi

Post on 10-Oct-2015

12 views

Category:

Documents


1 download

TRANSCRIPT

  • LAPORAN PRAKTIKUM RESMI

    ALGORITMA DAN STRUKTUR DATA II

    POHON (TREE)

    Disusun oleh :

    Unggul Budi Suryanto

    201301011

    Dosen pengampu :

    Yosef Murya Kusuma Ardhana.S.T., M.Kom

    JURUSAN SISTEM INFORMASI

    SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO

    PURWOKERTO

    2014

  • BAB I

    TEORI DASAR

    1. Pengantar

    Tree merupakan struktur data non linear. Struktur data dalam bentuk tree (pohon) dapat

    diartikan sebuah struktur data yang secara bentuk menyerupai sebuah pohon, yang terdiri

    dari serangkaian simpul (node) yang saling berhubungan. Simpul-simpul atau node

    tersebut dihubungkan oleh sebuah vektor. Setiap simpul dapat memiliki 0 atau lebih node

    anak (child). Sebuah node yang memiliki node anak disebut node induk (parent).

    Sebuah node anak hanya memiliki satu node induk. Sesuai konvensi ilmu komputer, tree

    bertumbuh ke bawah, dengan demikian node anak akan digambarkan berada di bawah

    node induknya. Node yang berada di pangkal tree disebut node akar (root), sedangkan

    node yang berada paling ujung pada piramida tree disebut node daun (leaf).

    STRUKTUR TREE

    Akar (root) adalah simpul yang tidak memiliki superordinat. Untuk pohon yang

    dicontohkan diatas, maka root adalah node A.

    Daun (leaf) adalah simpul yang tidak memiliki subordinat. Untuk pohon diatas

    dicontohkan diatas, maka leaf adalah node D, E, F, H, I, J

    TINGKAT (LEVEL) DAN KEDALAMAN (DEPTH)

    Tingkat (level)

    Root dinyatakan berada pada level 0 (namun ada juga dibebearapa buku

    literatur lain menyebutnya level 1).

  • Kedalaman (depth)

    Tree yang mempunyai posisi paling atas atau level teratas.

    DERAJAT (DEGREE) SEBUAH NODE

    Degree pada sebuah node menyatakan jumlah subordinat dari node tersebut.

    Untuk tree yang dicontohkan pada gambar diatas :

    Node A : degree = 3.

    Node B : degree = 2.

    Node C : degree = 0.

    Node D : degree = 3.

    BAB II

    PENJELASAN PROGRAM

    Program 1 : .

    /*

    * ugn.cpp

    *

    * Created on: Mar 19, 2009

    * Author: Administrator

  • */

    #include

    #include

    struct node{

    int data;

    node *kiri;

    node *kanan;

    };

    void tambah(node **root, int databaru){

    if ((root) == NULL) {

    node *baru;

    baru = new node;

    baru->data = databaru;

    baru->kiri =NULL;

    baru->kanan = NULL;

    printf("data bertambah!");

    }

    else if (databaru < (*root)->data)

    tambah(&(*root)->kiri, databaru);

    else if (databaru > (*root)-> data)

    tambah (&(*root)->kanan, databaru);

    else if (databaru == (*root)->data)

    printf("data sudah ada!");

    }

    void preOrder (node *root) {

    if (root !=NULL){

    printf("%d", root->data);

    preOrder(root->kiri);

  • preOrder(root->kanan);

    }

    }

    void inOrder(node *root){

    if(root !=NULL){

    inOrder(root->kiri);

    printf("%d",root->data);

    inOrder(root->kanan);

    }

    }

    void postOrder(node *root){

    if(root !=NULL){

    postOrder(root->kiri);

    postOrder(root->kanan);

    printf("%d",root->data);

    }

    }

    void 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();

    }while(pil!=5);

    }

    Output :

    Berikut penjelasan :

    1. Tanda yang diawali dengan */ dan diakhiri dengan /* adalah script yang digunakan untuk

    membuat sebuah komentar pada pemrograman C++ dan tidak berpengaruh dengan program yang akan dijalankan

    2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

    3. adalah sebuah library yang dibutuhkan untuk fungsi input seperti scanf(var) dan output seperti printf(var.)

    4. void main() adalah main program berupa integer atau program utama dalam koding tersebut. Setiap program utama harus diawali dengan tanda kurung kurawal buka{ dan diakhiri dengan

    tanda kurung kurawal tutup }. 5. struct Node{ 6. int data; 7. Node *kiri; 8. Node *kanan; 9. };

    Ini adalah deklarasi untuk tipe data baru bernama node.

  • 10. void tambah(Node **root,int databaru) adalah sebuah inisialisasi menu Yang digunakan dalam program.ogram..

    11. void preOrder(Node *root) adalah inisialisasi menu yang ada dalamnya 12. void inOrder(Node *root) adalah inisialisasi menu yang digunakan dalam

    program untuk menu bernama inOrder 13. void postOrder(Node *root) adalah inisialisasi menu yang digunakan dalam

    program untuk menu bernama post order

    14. int pilih; deklarasi tipe data yg digunakan adalah integer.

    15. 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");

    16. adalah proses untuk menampilkan daftar menu yg digunakan dalam program. 17. Switch case adalah bagian dari program yg digunakan saat proses pemilihan menu program. 18. While(pilih!=5) adalah deklarasi perulangan yg digunakan program tersebut.

    TUGAS PRAKTIKUM

    Tugas praktikum dalam modul ini adalah :

    1. Mengubah program dengan menggunakan library iostream..

    Berikut adalah listing programnya:

    /* * tree.cpp * * Created on: 13 Sep 2014 * Author: unggul budi suryanto */ #include using namespace std; struct Node{ int data; Node *kiri; Node *kanan; }; void tambah(Node **root,int databaru){ if((*root) == NULL) {

  • Node *baru; baru = new Node; baru->data = databaru; baru->kiri = NULL; baru->kanan = NULL; (*root) = baru; (*root)->kiri = NULL; (*root)->kanan = NULL; coutkiri,databaru); else if(databaru > (*root)->data) tambah(&(*root)->kanan,databaru); else if(databaru == (*root)->data) cout
  • int data; cout
  • Penjelasan program :

    1. Tanda yang diawali dengan */ dan diakhiri dengan /* adalah script yang digunakan untuk membuat sebuah komentar pada pemrograman C++ dan tidak berpengaruh dengan program

    yang akan dijalankan

    2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum

    kompilasi dimulai.

    3. adalah sebuah library yang dibutuhkan untuk fungsi input seperti cin>>var dan output seperti cout

  • Ini adalah deklarasi untuk tipe data baru bernama node. 10. void tambah(Node **root,int databaru) adalah sebuah inisialisasi menu Yang

    digunakan dalam program.ogram.. 11. void preOrder(Node *root) adalah inisialisasi menu yang ada dalamnya 12. void inOrder(Node *root) adalah inisialisasi menu yang digunakan dalam

    program untuk menu bernama inOrder 13. void postOrder(Node *root) adalah inisialisasi menu yang digunakan dalam

    program untuk menu bernama post order

    14. int pilih; deklarasi tipe data yg digunakan adalah integer. 15. cout