Pages

Monday, October 17, 2011

Membuat tree dengan Pascal

uses crt;
type pnode = ^data;
     data  = record
       isi : char;
        L, R : pnode;
     end;

    TTo = object
        tree : pnode;
        procedure create;
        function baru(el : char):pnode;
        procedure insert(var temp : pnode; el : char);
        procedure input; procedure cetak;
        procedure preorder(akar : pnode);
        procedure inorder(akar : pnode);
        procedure postorder(akar : pnode);
     end;

procedure TTo.create;
begin
   clrscr;
   tree := nil;
   writeln('Tree sudah kosong');
   readkey;
end;

function TTo.baru(el : char):pnode;
var
   b : pnode;
begin
   new(b);
   b^.isi := el;
   b^.r   := nil;
   b^.l   := nil;
   baru   := b;
end;

procedure TTo.insert(var temp : pnode; el : char);
var
   pil : char;
begin
   if temp = nil then
      temp := baru(el)
   else
   begin
      writeln('Penunjuk di => ',temp^.isi);
      write('Kiri (L) atau Kanan (R) : ');
      readln(pil);
      if upcase(pil) = 'L' then
         insert(temp^.l,el)
      else if upcase(pil) = 'R' then
         insert(temp^.r,el);
   end;
end;

procedure TTo.input;
var
   c : char;
begin
      clrscr;
      write('input data : ');readln(c);
      insert(tree, c);
      writeln;
      writeln('Data masuk di Tree');
      readkey;
end;

procedure TTo.cetak;
begin
   write('Preorder : ') ;preorder(tree);
   writeln;
   write('Inorder  : ') ;inorder(tree);
   writeln;
   write('postorder : ') ;postorder(tree);
   writeln;
   readkey;
end;

procedure Tto.preorder(akar : pnode);
begin
   if akar <> nil then
   begin
      write(akar^.isi:2);
      preorder(akar^.l);
      preorder(akar^.r);
   end;
end;
 Procedure Tto.InOrder(Akar : PNode);
  Begin
    If Akar <> Nil Then
      Begin
        InOrder(Akar^.L);
        Write(Akar^.isi:2);
        inorder(Akar^.R);
      End;
  End;

  Procedure Tto.PostOrder(Akar : PNode);
  Begin
    If Akar <> Nil Then
      Begin
        PostOrder(Akar^.L);
        postorder(akar^.r);
        Write(akar^.isi:2);
      End;
  End;

var
   t : TTo;
   pil : integer;
begin
   repeat
   clrscr;
   writeln('MENU UTAMA');
   writeln;
   writeln('1. Inisialisasi');
   writeln('2. Isi data');
   writeln('3. Tampilan kunjungan');
   writeln('4. Keluar');
   writeln;
   write('Pilihan [1..4] : ');readln(pil);
   with t do
   case pil of
   1 : create;
   2 : input;
   3 : cetak;
   end;
   until pil = 4;
end.

Output : 
Pada output ini user menginput nomor 1.
 

Setelah user menginput nomor 1, maka program akan memulai insialisasi kemudian akan tercetak kalimat seperti pada tampilan output.
 


Kemudian user menginput/memilih nomor 2. Program ini digunakan untuk mengisi data.


Setelah menginput/memilih nomor 2 maka program akan meminta user untuk menginput data. Kemudian data tersebut dimasukkan ke dalam tree. 



Jika user memilih kembali nomor 2 dan memasukkan data lagi, maka program akan menanyakan data baru tersebut diletakkan disebelah kanan atau kiri dari data sebelumnya. Pada inputan ini user meletakkan di sebelah kanan. Kemudian data tersebut dimasukkan ke dalam tree.



Kemudian jika user memilih kembali nomor 2 dan memasukkan data. Maka program akan menanyakan data baru tersebut diletakkan disebelah kanan atau kiri dari data sebelumnya. Pada inputan ini user meletakkan data baru tersebut di sebelah kanan data e dan sebelah kiri data i. Kemudian data tersebut dimasukkan ke dalam tree.



Kemudian nomor 3 digunakan untuk menampilkan data yang sebelumnya sedah dimasukkan.



Berikut ini adalah tampilan dari data yang sebelumnya telah diinput. Program akan menampilkan urutan dari Preorder, inorder, dan postorder.


Kemudian pilihan nomor 4 digunakan untuk keluar dari program yang dijalankan.
 

1 comment:

  1. KALO TREE UNTUK PROGRAM DATA KARYAWAN GIMANA TUH GAN..?

    ReplyDelete