Kamis, 19 Juli 2012

Tree


  1. Tree adalah struktur data yang non cilcular yang memiliki sifat khusus. 
dan tree juga merupakan salah satu bentuk implementasi  banyak linked list yang biasanya digunakan untuk menggambarkan hubungan yang hirarkis antara elemen-elemen yang ada. 

 contoh algoritma dari Tree: 



contoh :

#include "iostream.h"
#include  "string.h"
#include "conio.h"

struct simpulpohon
{
  simpulpohon *induk;
  simpulpohon *kiri;
  simpulpohon *kanan;
  char data;
};

class pohonbiner
{
  private:
  simpulpohon *akar;

  int tambah(simpulpohon *orangtua, simpulpohon *baru);
  void tampil(simpulpohon *simpul);

  public:
  pohonbiner();
  int tambah(char data);
  void tampil();

};

void main()
{
  clrscr();
  char data[] = "CARKDUPBENXZS";

  pohonbiner pohon;

  for (int i = 0; i < strlen(data); i++)
  pohon.tambah(data[i]);

  cout<<"Data ke Pohon Biner : "<<endl;
  for (int x = 0; x < strlen(data); x++)
   cout<<data[x];

  cout<<endl;
  cout<<endl;
  cout<<"Hasil Pohon Biner :"<<endl;
  pohon.tampil();
  getch();
}

pohonbiner::pohonbiner()
{
  akar = NULL;
}

int pohonbiner::tambah(char data)
{
  simpulpohon *simpul;

  simpul= new simpulpohon;

  simpul->kiri = NULL;
  simpul->kanan = NULL;
  simpul->induk = NULL;
  simpul->data = data;

  if (akar == NULL)
  {
    akar = simpul;
    return(1);
  }
  else
     return(tambah(akar,simpul));
}

int pohonbiner::tambah(simpulpohon *orangtua, simpulpohon *baru)
{
  if (baru->data ==orangtua->data)
   {
    delete baru;
    return(0);
   }

  else if (baru->data < orangtua->data)
   {
    if (!orangtua->kiri)
     {
      orangtua->kiri = baru;
      baru->induk = orangtua;
     }
    else
      return(tambah(orangtua->kiri,baru));
   }

  else
   {
     if (!orangtua->kanan)
     {
       orangtua->kanan = baru;
       baru->induk = orangtua;
     }
     else
       return(tambah(orangtua->kanan,baru));
    }
  return(1);
}


void pohonbiner::tampil()
{
  tampil(akar);
  cout<<endl;
}

void pohonbiner::tampil(simpulpohon *simpul)
{
  if (simpul)
  {
     if (simpul->kiri) tampil(simpul->kiri);

     cout<<simpul->data;

     if (simpul->kanan) tampil(simpul->kanan);
  }
}

Tidak ada komentar:

Posting Komentar