TREE KELOMPOK 7 HUSNATUL WILDA ( ) MISRIANA ( )

Slides:



Advertisements
Presentasi serupa
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009
Advertisements

STRUKTUR DATA (10) tree manipulation
JULIAN ADINATA PAUL JHONATAN UKEU PUTRI ROMLI MAULANA
Pertemuan 8 STRUKTUR POHON (TREE).
BAB 9 TREE Tujuan Instruksional Umum:
By : Fitroh Amaluddin & Galih Wasis W.
Pertemuan 9 STRUKTUR POHON (TREE) IMAM SIBRO MALISI NIM :
Algoritma dan Struktur Data
Tree.
Kuliah ke-9 Struktur Data Pohon/Tree (Bab 6)
Tree Yuliana S.
PART 4 TREE (POHON) Dosen : Ahmad Apandi, ST
Algoritma dan Struktur Data
Z Bekti - Rita - Sevenhot Struktur Data & Algoritma 2009.
ADT Tree 2007/2008 – Ganjil – Minggu 8.
Tenia Wahyuningrum, S.Kom. MT
4. Pohon (Tree) 4.1. Definisi Rekurens Dari Pohon
STRUKTUR DATA tree manipulation
BINARY TREE Universitas Ahmad Dahlan
1 Pertemuan Tree Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Pertemuan 13 Graph + Tree jual [Valdo] Lunatik Chubby Stylus.
Algoritma dan Struktur Data
Tree. Tree (Pohon) Dalam dunia nyata, sebuah pohon memiliki : akar, cabang, daun. Dalam dunia komputer, pohon (tree) memiliki 3 (tiga) bagian tersebut.
Matakuliah : T0026/Struktur Data Tahun : 2005 Versi : 1/1
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Organisasi Berkas Sekuensial Berindeks
Struktur Data Tree Eka Rahayu S. (2 Agustus 2011).
Binary Tree.
POHON / TREE.
Pohon Seimbang / AVL Tree (Bab 6)
Menggambar Tree wijanarto.
Defri Kurniawan POHON DAN POHON BINER Defri Kurniawan
TREE STRUCTURE (Struktur Pohon)
STRUKTUR DATA Chapt 6 : TREE Oleh : Yuli Praptomo PHS, S.Kom.
Struktur Data Binary Search Tree (BST)
STRUKTUR POHON ( BINER )
Pohon dan Pohon Biner Anifuddin Azis.
Diagram Pohon (Tree Diagram)
Manipulasi Tree.
POHON.
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
STRUKTUR DATA Tree (Struktur Pohon).
Tree (POHON).
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
NAMA : SITI HAJAR NIM : UNIT : B NO.HP :0852 –
STRUKTUR DATA 2014 M. Bayu Wibisono.
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
Manipulasi Tree.
Tree.
Teknik Informatika - Universitas Muhammadiyah Malang (UMM)
Kuliah ke-9 Struktur Data Pohon/Tree (Bab 6)
TREE (POHON).
Algoritma dan Struktur Data
TUGAS MATEMATIKA DISKRIT KELAS B (POHON) Engelinus Nana ( ) Eka Christy ( ) Engelinus Nana ( ) Eka Christy ( )
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
Tree (Pohon).
POHON Pohon (Tree) merupakan graph terhubung tidak berarah dan tidak mengandung circuit. Contoh: (Bukan) (Bukan) (Bukan)
Oleh Shoffin Nahwa Utama, S.Kom
IT234 Algoritma dan Struktur Data
Tree.
IT234 Algoritma dan Struktur Data
Rahmady Liyantanto liyantanto.wordpress.com
AVL - Tree Defenisi : avl Tree adalah Binary Search Tree yang mempunyai ketentuan bahwa “Maksimum perbedaan height antara subtree kiri dan subtree kanan.
Pohon Biner.
Algoritma dan Struktur Data
IT234 Algoritma dan Struktur Data
TREE Oleh : Neny silvia Nurhidayah Afny wilujeng Setyorini
5 11/18/2018.
Review Struktur Data Nisa’ul Hafidhoh, MT.
Transcript presentasi:

TREE KELOMPOK 7 HUSNATUL WILDA (1405020053) MISRIANA (1405020038) NURZAITUN RAHMAH (1405020052) MUTIA RAHMI (1405020041)

Tree merupakan salah satu struktur data yang paling penting, karena banyak aplikasi menggunakan informasi dan data yang secara alami memiliki struktur hirarkis berguna dalam membantu memecahkan banyak masalah algoritmis.

Aplikasi pohon biner : a. sebagai representasi ekspressi matematika b Aplikasi pohon biner : a. sebagai representasi ekspressi matematika b. aplikasi pohon biner dalam Huffman Coding. Cara Penggambaran Tree : • Notasi Kurung • Diagram Venn • Notasi Tingkat • Notasi Garis

Terminologi : – Tree (atau pohon) sejumlah node yang berhubungan secara hirarkis dimana suatu node pada suatu hirarki merupakan cabang dari node dengan hirarki yang lebih tinggi dan juga memiliki cabang ke beberapa node lainnya dengan hirarki yang lebih rendah. – Root (atau akar) Node dengan hirarki tertinggi dinamakan root. – leaf (atau daun) node yang tidak memiliki cabang. – Internal node (atau node dalam) node yang bukan merupakan leaf. – edge (atau sisi atau cabang) menyatakan hubungan hirarkis antara kedua node yang terhubungkan, biasanya digambarkan berarah (berupa panah) untuk menunjukkan node asal edge lebih tinggi dari node tujuan dari edge.

Level (atau tingkat) suatu node (Kadang dimulai level 0 atau 1) Bilangan yang menunjukan hirarki dari suatu node, root memiliki level 1, node cabang dari root memiliki level 2, node cabang berikutnya dari node adalah level 3, dan seterusnya. – Height (atau tinggi) suatu tree Sama dengan level dengan angka terbesar (hirarki terendah) suatu node yang ada dalam tree atau bisa juga didefinisikan sebagai jumlah sisi terbanyak dari root hingga suatu leaf yang ada di tree. – Depth (atau kedalaman) suatu node Jumlah sisi dari root hingga node ybs. – Subtree (atau subpohon) sebagian dari tree mulai dari suatu node N melingkupi node-node yang berada dibawah hirarkinya sehingga dapat dipandang sebagai suatu tree juga yang mana N sebagai root dari tree ini. – Tree kosong Suatu tree yang tidak memiliki satu node pun. – Tree dengan urutan letak geometris node-node yang merupakan cabang yang sama dari suatu node adalah penting; biasanya urutan dari kiri ke kanan

B, C, D dan E memiliki induk (parent) yang sama yaitu A, sehingga ke- 4 node tersebut disebut saudara (siblings) - Semua node di bawah suatu node induk hanya dapat diakses melalui induknya - Lintasan (path) sebuah node X adalah urutan akses untuk mendapatkan X yang dimulai dari Akar. Path(M) = [A – B – G – M] - Panjang lintasan (path length) X adalah jumlah node yang harus diakses untuk mendapatkan X; sehingga |Path(M)| = 4. Ada juga yang menyatakan panjang lintasan sebuah node adalah jumlah garis dari akar sampai node tersebut - Tinggi (height) dari sebuah pohon adalah panjang lintasan terpanjang. Tinggi pohon di bawah ini = 4 - Jika ada sebuah lintasan dari node a ke node b, maka a adalah pendahulu (ancestor) dari b dan b disebut keturunan (descendent) dari a - Kedalaman (depth) dari sebuah node adalah panjang lintasan dari akar ke node tersebut. Depth (G) = 3

Karakteristik : a. Terdapat 1 node yang unik, yang tidak memiliki predecessor, yang disebut dengan root (akar) b. Terdapat satu atau beberapa node yang tidak memiliki successor yang disebut dengan leaf (daun) c. Setiap node kecuali root pasti memiliki satu predecessor d. Setiap node kecuali leaf pasti memiliki 1 atau lebih successor

CONTOH :

BINARY TREE Karakteristik : Maksimum child adalah 2 (Left Child dan Right Child) Complete Binary Tree : Bila semua node kecuali Leaf memiliki 0 atau 2 child. Subtree pada Heap Tree dapat memiliki path length yang berbeda Skewed Binary Tree (Miring) : Bila semua node, kecuali Leaf memiliki hanya 1 child Full Binary Tree : Bila semua node kecuali Leaf memiliki 2 Child dan semua subtree harus memiliki path yang sama Representasi : - Ekspresi MM dengan Binary Tree - Huffman Code

Huffman Code: Hubungan Level dengan Jumlah Data :

TRAVERSAL BINARY TREE - Operasi penelusuran node-node dalam binary tree - Traversal dibagi 3, yaitu : a. Preorder b. Inorder c. Postorder

Algoritma : Procedure Preorder (n : BST); Begin If (n<> NIL) Then Write(n^.Info); Preorder(n^.Kiri); Preorder(n^.Kanan); End;

Procedure Inorder (n : BST); Begin If (n<> NIL) Then Inorder(n^ Procedure Inorder (n : BST); Begin If (n<> NIL) Then Inorder(n^.Kiri); Write(n^.Info); Inorder(n^.Kanan); End; Procedure Postorder (n : BST); Postorder(n^.Kiri); Postorder(n^.Kanan);

Implementasi Binary Tree : a. Array b Implementasi Binary Tree : a. Array b. Linked List Implementasi BT pada array : - Indeks pada array menyatakan nomor kode - Node root mempunyai indeks array = 1 - Leftchild suatu node dengan nomor p adalah (2p) - Rightchild suatu node dengan nomor p adalah (2p+1) - Parent dari suatu node dengan nomor p adalah (p div 2)

Implementasi Binary Search Tree : Ketentuan : a Implementasi Binary Search Tree : Ketentuan : a. Semua left child harus lebih kecil dari parent b. Semua right child harus lebih besar dari parent Keuntungan : Pencarian node target menjadi lebih efisien dan cepat Operasi-Operasi Standar BST : - Mengosongkan BST - Mencek apakah BST kosong - Mencari Tree Minimum - Mencari Tree Maksimum - Memasukkan data baru ke dalam BST - Mencari elemen tertentu dalam BST - Menghapus data tertentu dari dalam BST - Menampilkan semua elemen dalam BST

A.Mengosongkan BST (Makenull) Procedure Makenul (T: BST); Begin T := Nil; End; b. Memeriksa Apakah BST Kosong Function Empty(T : BST) : Boolean; Empty := (T = Nil)

c. Pencarian Tree Minimum Function TREE_MINIMUM (T : BST ) : BST; Begin If (Not Empty (T)) Then While (T^.Kiri <> NIL) do T = T^.Kiri; End; return T;

d. Pencarian Tree Maksimum Function TREE_MAKSIMUM(T : BST ) : BST; Begin If (Not Empty (T)) Then While (T^.Kanan <> NIL) do T = T^.Kanan; End; return T;

Operasi Insert : - Pencarian lokasi untuk node yang akan diinsert selalu dimulai dari root - Jika node yang diinsert lebih kecil dari root , maka insert di daun pada left subtree - Jika node yang diinsert lebih besar dari root , maka insert di daun pada right subtree

E. Memasukkan data baru ke dalam BST Procedure Insert(x : TipeData; Var T : BST); Begin If (T = Nil) Then (* Jika ditemukan T yang nil *) New(T);(* ciptakan node baru ditunjuk oleh T *) T^.Kiri := Nil; (* Set pointer kiri = nil *) T^.Info := x; (* Isi data pada node = x *) T^.Kanan := Nil; (* Set pointer kanan = nil *) End Else (If x = T^.Data) Then (* x sudah ada dalam T *) Writeln(‘Error : data tersebut sudah ada *) Else (If x < T^.Data) Then Insert(x, T^.Ki) (*jika x < data yg ditunjuk T, maka sisipkan x ke kiri*) Else (* x > data yang ditunuk T sisipkan x ke kanan *) Insert(x, T^.Ka) End;

f. Mencari elemen tertentu dalam BST Function Search (x: TipeData, T : BST) : Boolean; Begin If (T = Nil) Then Search := False Else If (x = T^.Info) Then Search := True (* x ditemukan *) Else If (x < T^.Info) Then Search := Search(x, T^.Kiri) (*cari x ke kiri *) Else (*x > T^.Info *) Search:= Search(x, T^.Kanan) (* cari secara rekursif ke kanan *) End;

Operasi Delete Ketentuan Delete : - Jika yang didelete adalah leaf maka tidak perlu dilakukan modifikasi terhadap lokasi - Jika yang didelete adalah node yang hanya memiliki satu anak, maka anak tersebut langsung menggantikan posisi dari parent-nya - Jika yang didelete adalah node dengan 2 anak (2 subtree), maka node yang diambil menggantikan node yang dihapus adalah : a. Berasal dari left subtree yang diambil adalah node yang paling kanan (nilai terbesar) b. Berasal dari right subtree yang diambil adalah node yang paling kiri (nilai terkecil)

g. Menghapus data tertentu dari dalam BST Procedure Delete (x : TipeData; Var T : BST); Var Bantu : Pointer; Begin If (T = Nil) Then Writeln(‘Error : ‘, x, ‘ tidak ditemukan ‘) Else If (x < T^.Info) Then Delete(x, T^.Kiri) (* rekursif ke kiri *) Else If (x > T^.Info) Then Delete(x, T^.Kanan) (*rekursif ke kanan *) Else (*x ditemukan *) If (T^.Kiri = Nil And T^.Kanan = Nil) Then (*Kasus x adalah daun *) Bantu := T; (*Tangkap node dengan pointer Bantu *) T := Nil; (*potong T yang tadinya menunjuk node berisi x *) Dispose(Bantu) (*deallocate Bantu atau lepaskan node *) End

Else If (T^. Kiri = Nil) Then (. x berada pada node dimana kirinya nil Else If (T^.Kiri = Nil) Then (*x berada pada node dimana kirinya nil *) Begin Bantu := T; T := T^.Kanan; (* Set T = pointer kanannya *) Bantu^.Kanan := Nil; (*putuskan hubungan node dgn kanannya *) Dispose (Bantu); (*lepaskan node berisi x *) End Else If (T^.Kanan = Nil) Then (*x berada dinode dimana kanannya nil *) T := T^.Kiri ; (* Set T = pointer kirinya *) Bantu^.Kiri := Nil; (*putuskan hubungan node dengan kirinya *) Dispose (Bantu); (* lepaskan node yang berisi x *) Else (* pointer kiri dan kanan T tidak kosong *) T^.Info := DeleteMin(T^.Kanan)

Fungsi Untuk Mendukung Operasi Delete : Function DeleteMin (Var A : BST) : TipeData; Var Bantu : Pointer; Begin If (T^.Kiri = Nil) Then (*ditemukan data terkecil *) Bantu := T ; (* tangkap node yang berisi data terkecil *) DeleteMin := T^.Info; (*Ambil&simpan data terkecil *) T := T^.Kanan; (* Set T = pointer kanannya *) Bantu^.Kanan := Nil; (*lepas hubungan node tsb dgn anaknya *) Dispose (Bantu); (*lepaskan node yang berisi data terkecil *) End Else DeleteMin := DeleteMin(T^.Ki); (*rekursif ke kiri *) End;

h. Menampilkan semua elemen dalam BST Procedure Tampil(T); Var Pilih : Integer; Begin Clrscr; Writeln(‘1. Tampil Secara Preorder’); Writeln(‘2. Tampil Secara Inorder’); Writeln(‘3. Tampil Secara Postorder’); Writeln; Write(‘Silahkan Pilih : ‘); Readln(Pilih); If (Pilih = 1) Then Preorder(T) Else If (Pilih = 2) Then Inorder (T) Else Postorder(T); Readln End;

AVL TREE Definisi : BST yang mempunyai ketentuan bahwa maks perbedaan tinggi antara subtree kiri dan kanan adalah satu Height-Balanced Tree : - BST adalah Height Balanced p-tree yang artinya maksimum perbedaan height antara subtree kiri dan kanan adalah p - AVL Tree adalah height balanced 1-tree yang berarti maksimum perbedaan height antara subtree kiri dan kanan adalah satu a. TallLeft bila subtree kiri lebih panjang dari subtree kanan (simbol -) b. TallRight bila subtree kanan lebih panjang dari subtree kiri (simbol +) c. Balance bila Subtree kiri dan kanan mempunyai height sama, simbolnya 0

Search Path : Path pencarian lokasi untuk dilakukan operasi insert dimulai dari Root Pivot Point : - Adanya node pada search path yang balancenya TallLeft (tanda -) atau TallRight (tanda +) dan terletak paling dekat dengan node yang baru - Contoh : Jika diinsert node baru dengan nilai 5, maka pivot pointnya di node 25 Operasi Insert : - Kasus-1 Tidak ada pivot point dan setiap node adalah balance, maka bisa langsung diinsert sama seperti BST

Kasus 2 Jika ada PP tetapi subtree yang akan ditambahkan node baru memiliki height yang lebih kecil, maka bisa langsung di insert - Kasus 3 Jika ada PP dan subtree yang akan ditambahkan node baru memiliki height yang lebih besar, maka tree harus digenerate supaya tetap menghasilkan AVL Tree Regenerate : - Single Rotation a. Single Left Rotation b. Single Right Rotation - Double Rotation a. Double Left Rotation b. Double Right Rotation

Algoritma Single Right Rotation : Function SRR (R : Node) : Node; Begin Node P := R^.Left; R^.Left := P^.Right; P^.Right := R; SRR := P; End; Algoritma Single Left Rotation : Function SLR (R : Node) : Node; Node P := R^.Right; R^.Right := P^.Left; P^.Left := R; SLR := P;

Algoritma Double Right Rotation : Function DRR (R : Node) : Node; Begin Node P := R^.Left; Node Q := P^.Right; R^.Left := Q^.Right; P^.Right := Q^.Left; Q^.Right := R; Q^.Left := P; DRR := Q; End;

Algoritma Double Left Rotation : Function DLR (R : Node) : Node; Begin Node P := R^.Right; Node Q := P^.Left; R^.Right := Q^.Left; P^.Left := Q^.Right; Q^.Left := R; Q^.Right := P; DLR := Q; End;

HEAP TREE : Definisi : - Heap adalah Tree yang memenuhi persamaan : R[ I ] < R[ 2*I ] dan R[ I ] < R[2*I + 1] - Heap disebut juga Complete Binary Tree - Minimum Heap : Jika nilai parentnya selalu lebih kecil dari pada kedua childrennya - Maximum Heap : Jika nilai parentnya selalu lebih besar dari pada kedua

Algoritma : Procedure Heapify(A:T; I : Integer); Begin L := 2 Algoritma : Procedure Heapify(A:T; I : Integer); Begin L := 2*I; R := 2*I+1; If (L<=Heap_Size[A] And A[L] > A[I]) Then besar := L Else besar := I; If (R<=Heap_Size[A] And A[R] > A[besar]) Then besar := R; If (besar <> I) Then Swap(A[I], A[besar]); Heapify(A, besar); End; Procedure Bentuk_Heap(A : T); Heap_Size[A] = Length[A]; For I:=Length[A]/2 DownTo 1 Do Heapify(A, I);

1) Jelaskan apa yang di maksud dengan tree dan binary tree 2) Uraikan istilah-istilah umum dalam tree 3) Buatlah 1 contoh program tree 4) Sebutkan pengertian AVL tree 5) Sebutkan beberapa jenis tree yang memiliki sifat khusus