LAPORAN PRAKTIKUM RESMI STRUKTUR DATA 2

20
LAPORAN PRAKTIKUM RESMI TREE Disusun oleh : Christina Natalia Sunjaya 201301003 Dosen pengampu : Yosef Murya Kusuma Ardhana.S.T., M.Kom JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO

description

Nama : Christina Natalia SunjayaNIM : 201301003makul : Algoritma Dan Struktur Data 2

Transcript of LAPORAN PRAKTIKUM RESMI STRUKTUR DATA 2

LAPORAN PRAKTIKUM RESMITREE

Disusun oleh :Christina Natalia Sunjaya201301003

Dosen pengampu :Yosef Murya Kusuma Ardhana.S.T., M.Kom

JURUSAN SISTEM INFORMASISEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSOPURWOKERTO 2014

BAB 1TEORI DASARA. TreeTree merupakan struktur data non-linear. Struktur data dalam bentuk pohon (tree) dapat diartikan sebuah struktur data yang secara bentuk menyerupai sebuah pohon, yang terdiri dari serangkaian simpul (node) saling berhubungan. Simpul-simpul atau node tersebut dihubungkan oleh sebuah vector. Setiap simpul dpat memiliki 0 atau lebih node anak(child). Sebuah node yang memiliki node anak disebut node induk (parent). Sebuah node anak hanya memiliki satu node induk. Sesuai konvensu ilmu computer, tree bertumbuh kebawah, dengan demikian node anak akan digambarkan berada di bawah node induknya.Node yang berada di pangkal tree disebut node akar(root), sedangkan node yang berada paling ujung pada piramida tree disebbut node daun (leaf).B. Struktur Tree

A

DBC

GGFE

IJHJIH

Akar (root)Daun (leaf)Semua bulatan disebut simpul (node)Node G adalah node induk dari H, I , JNode H, I, J adalah node anak dari G

Akar (root) adalah simoul yang tidak memiliki superordinat. Untuk pohon yang dicontohkan di atas, maka root adalah node A.Daun (leaf) adalah simpul yang tidak memiliki subordinat. Untuk pohon yang dicontohkan di atas, maka leaf adalah node D, E, F, H, I, J

1. Superordinat dan Subordinat

A Level 0

BDC Level 1

IHGEF Level 2

JKLNM Level 3

Node B merupakan superordinat node E dan node F. Node E dan F mempunyai superordinat yang sama, yaitu node B. Node B mempunyai subordinat, yaitu node E (left child) dan F (right child). Node E dan F merupakan subordinat simpul B.

2. Tingkat (Level) dan Kedalaman (Depth) Kedalaman(depth)=3

a. Tingkat (level)Root dinyatakan berada oada level 0 (namun ada juga di beberapa buku literature lain menyebutnya level 1).b. Kedalaman (depth)Tree yang mempunyai posisi paling atas atau level paling atas.

3. Derajat (Degree) Sebuah Node.

Degree pada sebuah node menyatakan jumlah subordinat dari node tersebut.Untuk tree yang dicontohkan pada gambar di atas. Node A : degree =3 Node B : degree =2 Node C : degree =0 Node D : degree =3

C. Pohon Biner (Binary Tree)Pohon biner adalah sebuah tree yang pada masing-masing simpulnya hanya dapat memiliki maksimum 2 simpul anak, tidak boleh lebih. Pada pohon biner, umumnya kedua node anak (child) disebut dengan posisinya, yaitu subordinat kiri (left child) dan subordinat kanan (right child).

INFO

Left rightAda banyak cara dalam mengilustrasikan struktur sebuah node binary tree, namun yang paling umum adalah ilustrasi seperti pada gambar diatas.1. Pohon Biner dengan Depth 3 kedalaman (depth)=3

A

BC

GFED

IH

Ilustrasi pada gambar di atas merupakan contoh pohon biner dengan depth =32. Stricly Binary TreeStrictly binary tree adlaahee pohon biner yang semua node-nya (kecuali simpul leaf) mempunyai lengkap node subordinat kiri dan node subordinat kanan.

A

BC

FEGD

HONLMKJI

Sebuah strucly binary tree bila mempunyai n leaf maka akan mempunyai 2n-1 buah node.Perhatikan contoh gambar strictly binary tree di atas, maka dapat dihitung :Jumlah leaf : 8Jumlah node : 2*8-1=153. Completely Binary TreeCompletely binary tree dengan depth = d adalah pohon biner strictly binary tree, dimana semua leaf hanya berada pada level d. maka , pada completely binary tree berlaku: Pada level k jumlah node: n=2^k Untuk tree dengan depth d, maka jumlah node...: n=2^(d+1)-1 Untuk tree dengan depth d, maka jumlah node leaf: n=2^d Untuk tree dengan depth d, maka jumlah node bukan leaf..: n=(2^d)-1 Bila jumlag node seluruh node = n, maka depth tree adalah: d=log2(n+1)-1

Complete binary tree dengan depth = d, memiliki cirri-ciri : Setiap node yang berawal di bawah d-1, memiliki dua subordinat. Jika pada level d-1 subtree kanan nada node yang mempunyai subordinat, maka setiap node pada level d-1 subtree kiri harus memiliki subordinat kiri dan kanan.4. Balanced Binary TreeBalanced binary tree (pohon biner seimbang) atau biasa disebut dengan pohon AVL adalah pohon biner yang ketinggian subtree kiri dan subtree kanan untuk setiap node superordinat paling banyak selisih 1.Berikut ini adalah contoh Balance Binary Tree :

A

BC

EGFD

KJHI

Balance Binary Tree

LMUnbalance Binary Tree

D. Penomoran Node Pohon BinerUntuk melakukan konversi telah disepakati cara penomoran stiap node dalam binary tree sebagai berikut : Jika sebuah node bernomor n, maka subordinat kiri bernomor 2n dan subordinat kanan bernomor 2n+1. Node root diberi nomor 1.Penomoran node binary tree dapat diilustrasikan seperti pada gambar berikut:

ACABCBBAn 1 5

C 2n 2n+1 2 3 10 11 Dengan mengetahui dari nomor setiap node maka sebuah binary tree dapat direpresentasikan ke dalam sebuah array satu dimensi. Perhatikan contoh berikut ketika binary tree direpresentasikan ke dalam array satu dimensi.

BACGIFEDHLevel 0

Level 1Level 2

Level 3

Dengan menggunakan penomoran di atas, maka untuk menyimpan sebuah binary tree dengan depth = d, perlu disiapkan array satu dimensi dengan jumlah elemen minimal sebanyak 2^(d+1)-1 elemen.01 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ABCDEFGHI

Untuk depth=d, maka perlu dipersiapkan array satu dimensi minimal 2^(d+1).Contoh: untuk d=3 perlu dipersiapkan minimal 2^4=16 elemen. Misal dengan int A[16];

E. Operasi Pada Pohon BinerOperasi pada binary tree merupakan satu rangkaian proses yang dapat dibagi menjadi beberapa bagian operasi (fungsi) seperti :1. Inisialisasi2. Pembuatan sebuah node3. Pembuatan node akar4. Penambahan (insert) node baru ke dalam sebuah tree5. Penghapusan (delete) node dari sebuah tree6. Pembacaan atau penelusuran binary tree.Pembagian ini bukan berdasarkan urutan proses, namun hanya berdasarkan fungsinya yang berbeda. Sebelum proses di atas dapar dilakukan, tentunya segala sesuatu yang diperlukan harus disiapkan terlebih dahulu, antara lain mendeklarasikan struktur node dan semua pointer yang diperlukan sebagai berikut :Listing program mendeklarasikan struktur NodeStruct Node{struct Node *Left;char INFO;struct Node *Right;Simpul *Root, *P, *Q, *R;Char X;

INFOStruktur Node :

LEFT RIGHT *Root *p*Q*R Pointer root digunakan khusus menunjuk node akar. Pointer P digunakan khusus menunjuk node yang baru dibuat. Pointer Q dan R digunakan sebagai pointer pembantu. Pointer-pointer yang lain dapat ditambahkan bilamana diperlukan.

F. Proses InisialisasiInisialisasi yang dimaksud adalah pemberian nilai awal pada suatu variable atau kondisi yang dapat digunakan sebagai cirri suatu kondisi.Instruksi dasar untuk inisialisasi.Root = NULL;P=NULL;Inisialisasi bila ditulis dalam sebuah fungsi.Nama fungsi InisialisasiVoid Inisialisasi(){Root=NULL;P=NULL;}Fungsi ini harus dilaksanakan sebelum operasi yang lain. Pointer root ketika dideklarasikan isinya sudah ada, tapi nilainia tidak diketahui. Pointer root perlu diisi dengan NULL karena pointer root ini akan dijadikan tanda. Bila isinya bukan NULL berarti tree sudah ada, dimana node akar sedang ditunjuk oleh pointer root.1. Pembuatan Sebuah NodeFungsi untuk pembuatan sebuah nodeVoid BuatSimpul(char x){P=(Simpul*)malloc(sizeof(Simpul));If(P!=NULL){ P->INFO=X;P->Left=NULL; P->Right=NULL;}Else{Coutkiri = NULL;baru->kanan = NULL; (*root) = baru; (*root)->kiri = NULL; (*root)->kanan = NULL; coutkiri,databaru);else if(databaru > (*root)->data)tambah(&(*root)->kanan,databaru);else if(databaru == (*root)->data)coutkiri);coutkanan);cout