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 pemrograman, Sruktur 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 kosongIsFull : 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.