Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005

Slides:



Advertisements
Presentasi serupa
STRUKTUR DATA (10) tree manipulation
Advertisements

Binary Trees adalah parent
By : Fitroh Amaluddin & Galih Wasis W.
RED BLACK TREE INSERTION
Implementasi Binary Tree
Tree.
Binary Tree Rangga Juniansyah.
Operasi pada pohon biner
Algoritma dan Struktur Data
Algoritma dan Struktur Data
ADT Tree 2007/2008 – Ganjil – Minggu 8.
Binary Search Tree 2007/2008 – Ganjil – Minggu 9.
Tenia Wahyuningrum, S.Kom. MT
STRUKTUR DATA tree manipulation
BINARY TREE Universitas Ahmad Dahlan
1 Pertemuan Tree Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Algoritma dan Struktur Data
OPERASI JUMP DAN EXCEPTION HANDLING
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Matakuliah : T0026/Struktur Data Tahun : 2005 Versi : 1/1
Red-Black Trees.
Pertemuan 10 DIVIDE And CONQUER Lanjutan ….
Pertemuan 10 Binary Search Tree
Pertemuan 8 Stack dengan Array
Pertemuan 9 Stack dengan Linked-list
Pertemuan 15 Red-Black Tree (RBT)
1 Pertemuan 17 Heaps Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
1 Pertemuan 5 Diferensial Matakuliah: R0262/Matematika Tahun: September 2005 Versi: 1/1.
Matakuliah : R0022/Pengantar Arsitektur Tahun : Sept 2005 Versi : 1/1
1 Pertemuan 7 Queue dengan Linked-list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
1 Pertemuan 7 Diferensial Matakuliah: R0262/Matematika Tahun: September 2005 Versi: 1/1.
1 Pertemuan 12 B-Tree Matakuliah: T0534/Struktur Data Tahun: 2005 Versi: September 2005.
Matakuliah : R0262/Matematika Tahun : September 2005 Versi : 1/1
Binary Search Tree. Sebuah node di Binary Search Tree memiliki path yang unik dari root menurut aturan ordering – Sebuah Node, mempunyai subtree kiri.
Struktur Data Tree Eka Rahayu S. (2 Agustus 2011).
Struktur Data Binary Search Tree (BST)
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Manipulasi Tree.
Pertemuan 22 Graph Operation
TREE KELOMPOK 7 HUSNATUL WILDA ( ) MISRIANA ( )
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)
Matakuliah : T0026/Struktur Data Tahun : 2005 Versi : 1/1
Algoritma dan Struktur Data
Pertemuan 6 Queue dengan Array
Tim Struktur Data Program Studi Teknik Informatika UNIKOM
Pertemuan 3 Diferensial
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Oleh Shoffin Nahwa Utama, S.Kom
BINARY SEARCH TREE (BST)
IT234 Algoritma dan Struktur Data
Binary Search Tree (BST)
Tree.
IT234 Algoritma dan Struktur Data
Tahun : <<2005>> Versi : <<1/2>>
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
Binary Search Tree (BST)
IT234 Algoritma dan Struktur Data
TREE Oleh : Neny silvia Nurhidayah Afny wilujeng Setyorini
Binary Search Tree (BST)
Transcript presentasi:

Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005 Pertemuan 11 AVL Tree

Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : mendemonstrasikan operasi pada AVL Tree(TIK-09). menerapkan AVL Tree pada program aplikasi komputer (TIK-09).

Terminologi Operasi Insert Representasi Implementasi Outline Materi Single Rotation Double Rotation Representasi Implementasi

Terminologi AVL Tree adalah BST dengan ketentuan |height(LS)-height(RS)|<2 Height-Balanced Tree BST adalah Height-Balanced p-Tree, yang berarti maksimum perbedaan height antara subtree kiri dan kanan adalah p. AVL Tree adalah Height-Balanced 1-Tree yang berarti maksimum perbedaan tinggi antara subtree kiri dan kanan adalah 1. Balancing : TallLeft (–):subtree kiri lebih tinggi dari subtree kanan. TallRight(+):subtree kanan lebih tinggi dari subtree kiri. Balance (0):tinggi subtree kiri&kanan sama. Search Path Path pencarian lokasi untuk dilakukan operasi INSERT, (dimulai dari Root). Pivot Point Adalah Node pada Search Path yang balancenya TallLeft atau TallRight dan terletak paling dekat dengan node yang baru. balance factor = -1 balance factor = 1 balance factor = 0

Operasi Insert Operasi INSERT pada AVL tree harus tetap menghasilkan AVL Tree (tidak mengubah ketentuan AVL Tree). Setiap penambahan node baru, ada kemungkinan menyebabkan non AVL Tree, untuk itu perlu dilakukan rebalancing / regenerate. Proses rebalancing dilakukan dengan cara melakukan rotasi pada subtree. Penambahan node baru pada kondisi seluruh subtree balance, rebalancing tidak diperlukan lagi setelah proses INSERT.

Kasus 1 Tidak ada pivot point dan setiap node adalah balance, maka insert bisa langsung dilakukan sama seperti BST (tanpa rebalancing). Contoh : Sesudah Insert(80) 54 70 30 80 + Sebelum Insert(80) 54 70 30

Kasus 2 Ada pivot point tetapi subtree yang akan diinsert lebih pendek, maka insert langsung bisa dilakukan. Contoh : Sesudah Insert(10) 54 70 30 80 10 + - Sebelum Insert(10) 54 70 30 80 +

Kasus 3 Jika ada pivot point dan subtree yang akan diinsert lebih tinggi, maka TREE harus digenerate, supaya tetap menghasilkan AVL TREE. Regenerate : Single Rotation Double Rotation

Single Rotation - 54 70 30 20 - + 54 70 30 20 10 - 54 70 20 30 10 T3 B Remainder of the tree B A T2 T1 p 1 2 (pivot) 3 New node (a) (b) - 54 70 30 20 - + 54 70 30 20 10 - 54 70 20 30 10

Double Rotation Sebelum Insert 55 60 80 20 90 - + 10 40 5 30 50 10 40 5 30 50 Insert 55 40 55 60 80 20 90 - + 10 5 30 50 B Remainder of the tree A T4 C T1 T2 T3 p 1 2 (pivot) 3 4 salah satu dari ini adalah node yang baru Setelah Rotasi I 60 80 40 90 20 50 10 30 55 5 Setelah Rotasi II 40 60 20 80 - + 10 30 5 55 50 90

Implementasi ##define IS_FULL(ptr) (!ptr) ##define FALSE = 0 ##define TRUE = 1 /* Representation */ typedef struct { int key; } element; typedef struct tree_node *tree_pointer; struct tree_node { tree_pointer left_child; element data; short int bf; tree_pointer right_child; }; int unbalanced = FALSE; tree_pointer root=NULL;

Implementasi(2) void avl_insert(tree_pointer *parent, element x, int *unbalanced) { if (!parent) { *unbalanced = TRUE; parent=(tree_pointer) malloc(sizeof(tree_node)); if (IS_FULL(!parent)) { fprintf(stderrr,"The memory is full\n"); exit(1); }; (*parent)->left_child=(*parent)->right_child=NULL; (*parent)->bf=0; (*parent)->data=x; } else if(x.key<(*parent)->data.key){ … else if(x.key>(*parent)->data.key){ else { *unbalanced = FALSE; printf("The key is already in the tree"); avl_insert((*parent)->left_child, x, unbalanced); if (*unbalanced) { /* left branch has grown higher */ switch((*parent)->bf){ case -1:(*parent)->bf=0;* unbalanced=FALSE; break; case 0 :(*parent)->bf=1; break; case 1 :left_rotation(parent,unbalanced);}} avl_insert((*parent)->right_child, x, unbalanced); if (*unbalanced) { /* right branch has grown higher */ switch((*parent)->bf){ case 1 :(*parent)->bf=0; *unbalanced=FALSE;break; case 0 :(*parent)->bf=1;break; case 1 :right_rotation(parent,unbalanced); }}

Selesai