Pages

Minggu, 18 Desember 2011

Praktikum 8 QUEUE

Program :

#include <cstdlib>
#include <iostream> 
using namespace std;
class BinaryTree{
      private :
struct tree_node
        {
           tree_node* left;
           tree_node* right;
           char data;
        };
        tree_node* root;
  
    public:
        BinaryTree()
        {
           root = NULL;
        }
        bool isEmpty() const { return root==NULL; }
        void print_inorder();
        void inorder(tree_node*);
        void print_preorder();
        void preorder(tree_node*);
        void print_postorder();
        void postorder(tree_node*);
        void insert(char);
        void input();
};
 void BinaryTree::input(){
     int in;
     char tmp,tmp1;
     int n;
     cout<<"masukan banyak data : ";
     cin>>n;
     for(int i=0;i<n;i++){
             cout<<" Masukkan Node pohon : ";
             cin>>tmp;
             insert(tmp);
             }
     cout<<endl;
     cout<<" Hasil In-Order : ";
     print_inorder();
     cout<<endl;
     cout<<" Hasil Pre-Order : ";
     print_preorder();
     cout<<endl;
     cout<<" Hasil Post-Order : ";
     print_postorder();
     cout<<endl;
     }
void BinaryTree::insert(char d)
{
    tree_node* t = new tree_node;
    tree_node* parent;
    t->data = d;
    t->left = NULL;
    t->right = NULL;
    parent = NULL;
    if(isEmpty()) root = t;
    else
    {
        tree_node* curr;
        curr = root;
        while(curr)
        {
            parent = curr;
            if(t->data > curr->data) curr = curr->right;
            else curr = curr->left;
        }

        if(t->data < parent->data)
           parent->left = t;
        else
           parent->right = t;
    }
}
void BinaryTree::print_inorder()
{
  inorder(root);
}
void BinaryTree::inorder(tree_node* p)
{
    if(p != NULL)
    {
        if(p->left) inorder(p->left);
        cout<<" "<<p->data<<" ";
        if(p->right) inorder(p->right);
    }
    else return;
}
void BinaryTree::print_preorder()
{
    preorder(root);
}
void BinaryTree::preorder(tree_node* p)
{
    if(p != NULL)
    {
        cout<<" "<<p->data<<" ";
        if(p->left) preorder(p->left);
        if(p->right) preorder(p->right);
    }
    else return;
}
void BinaryTree::print_postorder()
{
    postorder(root);
}
void BinaryTree::postorder(tree_node* p)
{
    if(p != NULL)
    {
        if(p->left) postorder(p->left);
        if(p->right) postorder(p->right);
        cout<<" "<<p->data<<" ";
    }
    else return;
}
int main()
{
    BinaryTree b;          
    b.input();
    cout<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}


Hasil Compiler
Kunjungan pada pohon BINER
  • kunjungan dilakukan pada setiap Node tepat satu kali ( Binary Tree Traversal ).
  • dilakukan secara lengkap --> diperoleh informasi secara linier.
  • kunjungan dilakukan secara :
  1. Kunjungan PREORDER
           kunjungan ini disebut juga dengan depth first order.urutan pengunjungannya pertama
           dicetak isi Node yang dikunjungi.kedua kunjungi cabang paling kiri dan ketiga kunjungi
           cabang kanannya, terlihat seperti gambar hasil PREORDER diatas adalah
           J D A G E F H R M P Q T

     2.   Kunjungan INORDER
           kunjungan ini disebut juga dengan kunjungan symmetric order.urutan pengunjungannya
           pertama kunjungi cabang paling kiri. kedua cetak isi node yang dikunjungi dan ketiga
           kunjungi cabang kanannya, terlihat seperti gambar hasil INORDER diatas adalah
           A D E F G H J M P Q R T

    3.   Kunjungan POSTORDER
          urutan pengunjungannya, pertama kunjungi cabang kiri.kedua kunjungi cabang kanan dan
          ketiga cetak isi node yang dikunjungi, terlihat seperti gambar hasil POSTORDER diatas
          adalah
          A F E H G D Q P M T R J

0 komentar:

Posting Komentar