Senin, 27 Februari 2017

STRUKTUR DATA

PENGERTIAN STRUKTUR DATA

Struktur data adalah cara menyimpan atau merepresentasikan data di dalam 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.Sedangkan data adalah representasikan dai fakta  dunia nyata.Fakta atau keteangan tentang kenyataan yang disimpan ,direkam atau direpresentasikan dalam bentuk tulisan ,suara,gambar,sinyal atau simbol. Dalam istilah ilmu komputer, sebuah Sruktur adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.Dalam teknik pemrogramanSruktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan  pemrograman yang tidak tampak oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record). Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna, dan juga ada kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah Sruktur data dapat diterapkan untuk pengolahan database (misalnya untuk keperluan data keuangan) atau untuk pengolah kata (word processor) yang kolomnya berubah secara dinamis. Contoh Sruktur data dapat dilihat pada berkas-berkas lembar-sebar (spreadsheet), pangkal-data (database), pengolahan kata, citra yang dipampat (dikompres), juga pemampatan berkas dengan teknik tertentu yang memanfaatkan struktur data.Secara garis besar type data dapat dikategorikan menjadi:

Type data sederhana.·                

1. Type data sederhana tunggal, misalnya integer, real, boolean dan karakter.·                
2. Type data sederhana majemuk, misalnyaStringSruktur Data, meliputi:·                
3. Struktur data sederhana, misalnya array dan record.·                

Struktur data majemuk, yang terdiri dari:Linier : Stack, Queue, sertaList dan Multilist Non Linier : Pohon Biner dan GraphPemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan programsecara keseluruhan lebih efisien dan sederhana.Sruktur data yang standar yang biasanya digunakan dibidang informatika adalah:

* List linier (Linked List) dan variasinya
* Multilist
* Stack (Tumpukan)
* Queue (Antrian)
* Tree ( Pohon)
* Graph ( Graf )
* List linier (Linked List) dan variasinya * Multilist * Stack (Tumpukan) * Queue (Antrian) * Tree ( Pohon) * Graph ( Graf ) * List linier (Linked List) dan variasinya * Multilist * Stack (Tumpukan) * Queue (Antrian) * Tree ( Pohon) * Graph ( Graf )
REVIEW RECORD (REKAMAN) Disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan oleh pemrogram.Rekaman disebut juga tipe terstruktur.


TIPE STRUKTUR DATA

Tipe data adalah jenis data yang mampu ditangani oleh suatu bahasa pemrograman pada komputer.
Tiap-tiap bahasa pemrograman memiliki tipe data yang memungkinkan:
Deklarasi terhadap variabel tipe data tersebut
Menyediakan kumpulan operasi yang mungkin terhadap variabel bertipe data tersebut
Jenis obyek data yang mungkin
Contoh tipe data di C? Java? Pascal? .NET?
Struktur Data adalah cara penyimpanan dan pengorganisasian data-data pada memori komputer maupun file secara efektif sehingga dapat digunakan secara efisien, termasuk operasi-operasi di dalamnya.

Contoh Tipe Data :

1. Tipe data Char dan String

Ini merupakan tipe data dasar, tipe data ini didefinisikan pada deklarsi var dibagian algoritma/program.
Example : Var Nama : String
Nilai : Char
Keterangan :
Nama merupakan sebuah variabel didefinisikan sebagai variabel bertipe string, maksudnya pada variabel tersebut digunakan untuk menerima masukan sebuah nama yang terdiri dari sekumpulan huruf, dapat berupa huruf besar, kecil, atau campuran kedua-duanya.
Nilai, didefinisikan sebagai variabel yang bertipe data char, maksudnya variabel tersebut hanya dapat digunakan untuk memasukkan sebuah huruf dari huruf besar, seperti A, B, C,.. atau huruf kecil, a, b, c, …. 

2. Tipe data Boolean

Tipe data ini digunakan untuk pengambilan keputusan dalam operasi logika. Terdiri dari true disimbolkan ‘T’ dan False yang disimbolkan ‘F’. Ketika kita ingin mendapatklan hasil yang valid/pasti, kita menggunakan tipe data boolean untuk memperoleh keputusan dalam suatu penyelesaian yang pasti.

3. Tipe Data Integer

Merupakan tipe data bilangan bulat.
Tipe Data
Rentang nilai
Memori
Byte
0…255
1 byte
Word
0…65.555
1 byte
Integer
-32.768 s.d 32.767
2 byte
Long Integer
-2.147.483.648
4 byte

4. Tipe Data Real

Merupakan tipe data bilangan pecahan seperti real, single, double, comp, extend.

5. Tipe Data Subrange

Merupakan tipe data bilangan yang punya jangkauan nilai tertentu sesuai dengan definisi pada pemrogram.
Example:
Type Variabel=Nilai_awal…Nilai_akhir

6. Tipe Data Enumerasi

Merupakan tipe data yang memiliki elemen-elemen tertentu yang disebut satu/satu dari bernilai konstanta integer sesuai dengan urutannya. Pada tipe data ini elemen masukan diwakili oleh suatu nama variable yang ditlis di dalam kurung.
Example :
Indeks_Hari = (Nol, Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu)

7. Tipe Data Array (Larik)

Tipe data ini sudah terstruktur dengan baik, walaupun masih sederhana. Tipe data ini menampung sejumlah data dengan tipe data sama (homogen) dalam sebuah variabel.
Cara mendefinisikan tipe data array :
Berdimensi satu
Var
Nama_Variabel_Array[1...N]of tipe_data
1 Nomor Indeks
Berdimensi dua
Var
Nama_Variabel_Array=Array[1...N,1...M]of tipe_data
2 buah Nomor Indeks

8. Tipe Data Record

Tipe data komposit yang sudah terstruktur denagn baik. Tipe data ini digunakan untuk menampung data suatu obyek. Datanya berupa campuran dari tipe data seperti string, numerik, char, boolean, atau tipe data lainnya. Tipe data ini merupakan struktur dasar dari suatu sistem database.

9. Tipe Data Array Record

Tipe data array yang dibangun dari tipe data record.

10. Tipe Data Citra

Berisi grafik/gambar yang banyak digunakan pada aplikasi video.
Example :
Grafik perkembangan jumlah penduduk.
Perbedaan variabel dengan konstanta
Variabel adalah peubah, suatu nama lokasi yang diinginkan untuk menampung tipe data tertentu yang akan diolah komputer. Sedangkan konstanta adalah suatu harga yang diberikan pada sebuah variabel dengan harga.
deklarasikan sebagai Titik maka
mengacu field pada P adalah P.x dan P.y.macam-macam struktur data

ARRAY

           Array adalah sekumpulan variabel yang memiliki tipe data yang sama dan dinyatakan dengan nama yang sama. Array merupakan konsep yang penting dalam pemrograman, karna array memungkinkan untuk menyimpan data maupun referensi objek dalam jumlah banyak dan terindeks. Array menggunakan indeks integer untuk menentukan urutan elemen-elemennya, dimana elemen pertamanya dimulai dari indeks 0,elemen kedua memiliki indeks 1, dan seterusnya.
          Contoh :

-          Angka untuk menyimpan sederetan bilangan
-          Buku untuk menyimpan sekumpulan data buku
-          Mahasiswa untuk menyimpan beberapa data mahasiswa
          Sebagai contoh jika A merupakan sebuah array dengan tipe integer, maka notasi dari array A adalah: A[n], dengan n merupakan angka index dari array tersebut misal:
A[0]=100
A[1]=200
A[2]=300
A[3]=400
  Mendeklarasikan Variabel Array
       Mendeklarasikan variabel array dengan tipe data yang diinginkan dengan cara yang hampir sama dengan variabel biasa. Misalnya untuk mendeklarasikan variabel bertipe integer, dapat dilakukan dengan cara :
int [ ] bilangan; atau int bilangan [ ];
Jadi perbedaan utama pendeklarasian variabel array dengan variabel biasa adalah adanya tanda kurung [ ] di akhir tipe data atau di akhir nama variabel array. Pada tahap pendeklarasian variabel array ini belum ada alokasi memory untuk menyimpan data.
         Mendefenisikan Array
·         Setelah mendeklarasikan array, kita perlu mendefenisikan array, dalam arti menentukan besar array yang diinginkan. Misalnya dengan cara :
Bilangan = new int [5];
·         Array memiliki ukuran yang tetap dalam arti tidak dapat membesar atau mengecil ukurannya setelah didefenisikan. Setelah didefenisikan, maka variabel dengan nama bilangan dapat menyimpan 5 nilai integer yang dapat diakses melalui indeks 0 sampai indeks 4. Setelah pendefenisian array, maka memori akan dialokasikan untuk menyimpan data dari array. Besar memori yang dialokasikan tergantung dari tipe data variabel array dan jumlah elemen array yang didefenisikan.
·          Array Dua Dimensi
      Pada java juga menyediakan fasilitas untuk membuat array dua dimensi yang dapat membantu dalam pemrograman apabila array datu dimensi tidak mencukupi dalam menghasilkan suatu solusi. Array dua dimensi sebenarnya adalah array yang berisi array.
        Array Multidimensi
        Selain array satu dimensi dan array dua dimensi, dapat juga membuat array multi dimensi pada java. Array multidimensi merupakan array yang terdiri dari array yang tidak terbatas hanya dua dimensi saja. Kita dapat menggunakan kode berikut untuk mendapatkan array 3 dimensi :
Int [ ] [ ] array dimensi = new int [ 5 ] [ 10 ] [ 5 ] ;
  Dan pada array multidimensi , kita dapat menetukan ukuran array yang berbeda pada tiap array. Misalnya :
Int [ ] [ ] [ ] mdimensi = new int [ 5 ] [ ] [ ] ;
   Dari kode diatas, kita mendapatkan array pertama dengan 5 elemen, tetapi kita belum mendefinisikan ukuran array dimensi kedua dan ketiga.
Contoh ;
// Elemen 512 x 128 dari integer array
int[][] twoD = new int[512][128];
// karakter array 8 x 16 x 24
char[][][] threeD = new char[8][16][24];
// String array 4 baris x 2 kolom
String[][] dogs = {{ "terry", "brown" },
{ "Kristin", "white" },
{ "toby", "gray"},
{ "fido", "black"}
};
            Untuk mengakses sebuah elemen didalam array multidimensi, sama saja dengan mengakses array satu dimensi. Misalnya saja, untuk mengakses element pertama dari baris pertama didalam array dogs, kita akan menulis,
 System.out.print( dogs[0][0] );
 Kode diatas akan mencetak String “terry” di layar.
 Contoh Program :
Buatlah flowchart dan program array satu dimensi dengan menggunakan inputan user ( min 6).
      Contoh :       1. nilai [0 ] = 12 ;
                              2. nilai [ 1] = 36 ;
                              3. nilai [ 2] = 45 ;
                                4. nilai [3] = 58 ;
                                5. nilai [ 4] = 93 ;
                                6. nilai [ 5] = 87 ;
 Coding :
package tupen;
import javax.swing.JOptionPane;
public class Array3 {
public static void main(String []args){
         int n=Integer.parseInt(JOptionPane.showInputDialog("Berapa Jumlah data"));
         int[]angka=new int[n];
    // menggunakan perulangan for
        for (int i=0;i
        angka [i]=Integer.parseInt(JOptionPane.showInputDialog("Data ke - " + i+"?" ) );
        }
                //menggunakan perulangan while
        int a=0;
        while(a
       System.out.println("Nilai Index ke -"+ a +" Adalah = " +angka [a]);
        a++ ;
                                 }
                        }
}


LINK LIST

Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian Linked list juga merupakan suatu cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data yangdiperlukan. Struktur ini lebih dinamis karena banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda dengan array yang ukurannya tetap. berikut gambaran kecil mengenai linked list.
Didalam Linked List terdapat beberapa bagian lagi
1. Linked List Circular
    Double Linked List.
 Pengertian secara umumnya DLLC itu Linked list yang menggunakan pointer, dimana setiap node memiliki 3 field, yaitu:
1 field pointer yang menunjuk pointer berikutnya "next",
1 field menunjuk pointer sebelumnya " prev ",
1 field yang berisi data untuk node tersebut .
 
    Single Linked List 
             Single Linked List Circular (SLLC) adalah Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya.
 2. Linked List Non Circular
    Double Linked List Non Circular (DLLNC)
            adalah Double Linked List yang memiliki 2 buah pointer yaitu pointernext dan prev.
Pointer next menunjuk pada node setelahnya dan pointer prev menunjuk pada node sebelumnya.
Pengertian:
Double : artinya field pointer-nya dua buah dan dua arah, ke node sebelum dan sesudahnya.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Non Circular : artinya pointer prev dan next-nya akan menunjuk pada NULL.
    Single Linked List Non Circular (SLLNC)
              Adalah Linked List yang pointer nya selalu mengarah ke Node yang menampung *next bernilai NULL, jadi arahnya tidak menunjuk pointer didepannya sehingga tidak dapat kembali ke pointer - pointer sebelumnya. SLLNC ini juga memiliki 2 bagian, ada Tambah dan ada Hapus, masing - masing bagian ini juga masih meliputi 3 fungsi lain yaitu Belakang, Tengah, dan depan. untuk Contoh Tambah & Hapus (Depan & belakang),
 
STACK

STACK  adalah suatu stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.  Stack (Tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“  TOP dan Penghapusan selalu dilakukan pada TOP.
STACK PADA MATA KULIAH STRUKTUR DATA
Stack karena aturan penyisipan dan penghapusan semacam itu, TOP adalah satu-satunya alamat tempat terjadi operasi. Elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus.Dikatakan bahwa elemen Stack akan tersusun secara LIFO (Last In First Out).
  

karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan.
Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Compo juga.
 

OPERASI-OPERASI/FUNGSI STACK
Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
Clear : digunakan untuk mengosongkan stack
IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

INISIALISASI STACK
Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG.!
Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH!
 
QUEUE

Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front).
 Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out).
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
 Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear).
Karakteristik Queue atau antrian :
1. elemen antrian
2. front (elemen terdepan antrian)
3. tail (elemen terakhir)
4. jumlah elemen pada antrian
5. status antrian Operasi pada Queue atau antrian
 

1. tambah(menambah item pada belakang antrian)
2. hapus (menghapus elemen depan dari antrian)
3. kosong( mendeteksi apakah pada antrian mengandung elemen atau tidak)


 Operasi-operasi Queue :

 1. Create() Untuk menciptakan dan menginisialisasi Queue Dengan cara membuat Head dan Tail = -1
  

2. IsEmpty() Untuk memeriksa apakah Antrian sudah penuh atau belum Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail.
  

3. IsFull Untuk mengecek apakah Antrian sudah penuh atau belum Dengan cara mengecek nilai Tail, jika
Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh
  

4. Enqueue Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu


5. Dequeue() Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1 Penggeseran dilakukan dengan menggunakan looping.
  

6. Clear() Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1 Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca
  

7. Tampil() Untuk menampilkan nilai-nilai elemen Antrian Menggunakan looping dari head s/d tail

SORTING

Sorting adalah proses menyusun elemen – elemen dengan tata urut tertentu dan proses tersebut terimplementasi dalam bermacam aplikasi. Kita ambil contoh pada aplikasi perbankan. Aplikasi tersebut mampu menampilkan daftar account yang aktif. Hampir seluruh pengguna pada sistem akan memilih tampilan daftar berurutan secara ascending demi kenyamanan dalam penelusuran data. Beberapa macam algoritma sorting telah dibuat karena proses tersebut sangat mendasar dan sering digunakan. Oleh karena itu, pemahaman atas algoritma – algoritma yang ada sangatlah berguna.
 1.Selection Sort (Ascending): Pengurutan dilakukan dengan memilih elemen terbesar dan menempatkan pada posisinya, kemudian mencari element terbesar berikutnya dan menempatkan pada tempatnya, dan seterusnya.
 Proses pengurutan dengan menggunakan metode selection sort secara terurut naik adalah :
1. Mencari data terkecil dari data pertama sampai data terakhir, kemunian di tukar posisinya dengan data pertama.
2. mencari data terkecil dari data kedua sampai data terakhir, kemudian di tukar dengan posisinya dengan data kedua.
3. mencari data terkecil dari data ketiga sampai data terakhir, kemudian di tukar posisinya dengan data ketiga
4. dan seterusnya sampai semua data turut naik. apabila terdapat n buah data yang akan di urutkan, maka membutukan (n - 1) langkah pengurutan, dimana data terakhir yaitu data ke-n tidak perlu di urutkan karena hanya tinggal satu satunya.
  2. Bubble Sort Konsep Buble Sort Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai pada pengurutan gelembung. Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat.

SEARCHING

Pencarian (Searching) merupakan proses yang fundamental dalam pemrograman, guna menemukan data (nilai) tertentu di dalam sekumpulan data yang bertipe sama. Fungsi pencarian itu sendiri adalah untuk memvalidasi (mencocokkan) data.
 Metode pencarian dibagi menjadi 2, yaitu:
1. Metode Pencarian Beruntun
Konsep yang digunakan dalam metode ini adalah membandingkan data-data yang ada dalam kumpulan tersebut, mulai dari elemen pertama sampai elemen ditemukan, atau sampai elemen terakhir.
2. Metode Pencarian Bagi Dua (Binary Search)
Metode ini diterapkan pada sekumpulan data yang sudah terurut (menaik atau menurun). Metode ini lebih cepat dibandingkan metode pencarian beruntun. Data yang sudah terurut menjadi syarat mutlak untuk menggunakan metode ini.
Konsep dasar metode ini adalah membagi 2 jumlah elemennya, dan menentukan apakah data yang berada pada elemen paling tengah bernilai sama, lebih dari atau kurang dari nilai data yang akan dicari. Jika bernilai sama, maka langsung data yang dicari ditemukan. Jika data di elemen terurut naik, maka jika data yang berada di tengah kurang dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kanan, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan sebaliknya untuk nilai data yang berada di tengah lebih dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kiri, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan demikian sebaliknya untuk data yang terurut menurun. Dalam hal ini tentukan indeks paling awal dan indeks paling akhir, untuk membagi 2 elemen tersebut.
Indeks awal = i, dimana nilai i, pada awalnya bernilai 0;
Indeks akhir = j, dimana nilai j, pada awalnya bernilai sama dengan jumlah elemen.

TREE
Struktur data tree adalah sebuah struktur data yang secara bentuk menyerupai sebuah pohon, yang terdiri dari serangkaian node (simpul) yang saling berhubungan, Dalam literature lain dikatakan bahwa Struktur data pohon adalah suatu struktur data yang digunakan secara luas yang menyerupai struktur pohon dengan sejumlah simpul yang terhubung. Dengan kata lain dapat diambil sebuah definisi bahwa struktur data tree adalah sebuah struktur data bukan linear yang menggambarkan hierarki antar elemen-elemennya dan terbentuk dari sejumlah simpul-simpul yang saling terhubung. Dalam struktur data Tree ini dikenal adanya istilah-istilah, seperti root, node, child, parent, daun, derajad  dan sebagainya atau dengan kata lain terminology dari tree sebagai berikut :

-          Root  adalah node teratas dari sebuah tree. Node ini merupakan parent yang berada di level0 atau level teratas.
Root ini merupakan node yang memiliki hierarki tertinggi dan dapat juga memiliki anak. Node Root ini akan di ciptakan pertama,artinya jika tree kosong dan dimasukan suatu data untuk yang pertama kali maka data tersebut dijadikan sebagai root.  Node di bawah root yang saliang berhubungan akan membentuk subtree.
-          Node adalah elemen dalam sebuah tree yang berisi informasi.
-          Parent adalah Node yang berada diatas node lain secara langsung. Parent teratas bernama root.
-          Child adalah cabang langsung dari sebuah node.
-          Daun adalah node terakhir yang tidak memiliki child / anak. Disebut juga external node.
-          Derajad atau level adalah tingkatan dalam hierarki tree, dimulai dari level 0 untuk root dan level 1 untuk child dibawahnya dan seterusnya.
-          Predecesor, yaitu node yang berada di atas suatu node tertentu.
-          Successor, yaitu node yang berada di bawah suatu node tertentu.
-          Ancestor, yaitu seluruh node yang terletak sebelum node tertentu dan juga pada jalur yang sama.
-          Descendant, yaitu seluruh node yang terletak setelah node tertentu dan juga pada jalur yang sama.
-          Sibling,yaitu node-node yang memiliki parent yang sama.
-          Subtree, yaitu suatu node beserta descendent-nya.
-          Size,yaitu banyaknya node dalam suatu tree
-          Height, yaitu banyaknya tingkatan dalam suatu tree.
Berdasarkan jenisnya, tree dibagi menjadi dua,yaitu jenis tree static dan tree dynamic. Tree static adalah tree yang isi dari node-nodenya tetap, karena bentuk pohonnya telah ditentukan. Sedangkan tree dynamic adalah tree yang isi nodenya dapat berubah-ubah karena proses penambahan dan penghapusan.
Dalam tree terdapat beberapa macam bentuk , tetapi yang terkenal adalah binary tree. Binary Tree adalah sebuah tree yang hanya memiliki paling banyak 2 anak dan paling sedikit 0 anak. Dalam Binary Tree terdapat sebutan Binary Tree complete, yaitu jika semua level (kecuali level terakhir) mempunyai jumlah node maksimum (2r) dan bila semua simpul pada tingkat terakhir uncul dibagian kiri pohon[5].
Kemudian dikenal Extanded Binary Tree / 2 –tree, yaitu jika setiap node dalam tree mempunyai 0 atau 2 buah child. Dengan catatan node dengan dua buah child dikatakan internal node, dan node dengan nol child dikatakan external node. Aplikasi penting dari 2 tree ini adalah untuk menyajikan suatu ekspresi aritmatik yang mengandung operasi biner. External Node digunakan untuk menyajikan operand dan internal node disajikan sebagai operator yang bekerja terhadap dua subpohonnya.
Selain itu terdapat juga istilah skewed Binary Tree. Model ini adalah binary Tree yang semua nodenya keculai daun hanya memiliki satu anak. Sehingga model dari tree ini hanya terdiri dari subtree yang ke kanan atau hanya ke kiri saja. Dan pada tiap  levelnya hanya terdiri dari satu node.
Operasi dalam binary tree ada beberapa macam, yaitu insert, find, traverse, dan delete. Insert digunakan untuk memasukkan data ke dalam tree, find adalah untuk mencari data di dalam tree, delete adalah untuk menghapus data dalam tree, dan traverse (kunjungan) adalah teknik untuk mengunjungi semua node dengan kunjungan satu kali tiap node. Traverse ini terdapat tiga macam :
-          PreOrder traversal, yaitu jenis kunjungan yang akan mencetak node yang dikunjungi dulu, kemudian mencetak ke kiri dan terakhir ke kanan.
-          InOrder traversal, yaitu jenis kunjungan yang akan mencetak node bagian kiri dahulu kemudian ke node parent-nya baru ke node kanan.
-          PostOrder traversal, yaitu jenis kunjungan yang mencetak node kiri dahulu kemudian ke kanan dan terakhir baru ke parent.
Dengan adanya traversal ini maka data akan dicetak berdasarkan kunjungannya. Dapat diketahui bahwa kunjungan yang akan menghasilkan data terurut adalah kunjungan InOrder traversal.
Setelah mempelajari karakteristik dari struktur data Tree, maka akan dapat menilai apa kelebihan dan kekurangan dari struktur data Tree ini. Struktur data ini memiliki kelebihan dan kekurangan
Kelebihannya adalah ketika melakukan searching akan lebih cepat. Tetapi juga terdapat kelemahan yaitu dalam memasukan data (proses inserting) lebih lambat dari pada struktur linkedlist. Hal ini terjadi karena pada saat tree melakukan insert data maka data akan di urutkan sesuai nilainya, sehingga akan lebih memakan waktu, sedang saat mencari data (searching), karena data telah terurut maka proses akan lebih cepat daripada linkedlist.
   

   di bawah akan diuraikan istilah-istilah umum dalam tree :
a) Prodecessor : node yang berada diatas node tertentu.
b) Successor : node yang berada di bawah node tertentu.
c) Ancestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.
d) Descendant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama.
e) Parent : predecssor satu level di atas suatu node.
f) Child : successor satu level di bawah suatu node.
g) Sibling : node-node yang memiliki parent yang sama dengan suatu node.
h) Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua karakteristik dari tree tersebut.
i) Size : banyaknya node dalam suatu tree.
j) Height : banyaknya tingkatan/level dalam suatu tree.
k) Root : satu-satunya node khusus dalam tree yang tak punya predecssor.
l) Leaf : node-node dalam tree yang tak memiliki seccessor.
m) Degree : banyaknya child yang dimiliki suatu node.


 Beberapa jenis Tree yang memiliki sifat khusus :

1) Binary Tree
 Binary Tree adalah tree dengan syarat tiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, maka tiap node dalam binary tree hanya boleh memiliki paling banyak dua child.


 2) Binary search Tree
Adalah Binary Tree dengan sifat bahwa semua left child harus lebih kecil daripada right child dan parentnya. Juga semua right child harus lebih besar dari left child serta parentnya. Binary seach tree dibuat untuk mengatasi kelemahan pada binary tree biasa, yaitu kesulitan dalam searching / pencarian node tertentu dalam binary tree. Contoh binary search tree umum. Pada
dasarnya operasi dalam binary search tree sama dengan Binary tree biasa, kecuali pada operasi insert, update, dan delete.


Tidak ada komentar:

Posting Komentar