andymuljoyos

andymuljoyos

This user hasn't shared any profile information

Posts by andymuljoyos

Rangkuman Struktur Data 7

0

RED BLACK TREE

  • Root selalu warna hitam
  • External node selalu warna hitam
  • Node baru selalu warna merah
  • Node merah tidak boleh mempunyai anak warna merah

 

INSERTION

 

Picture1

Jika paman berwarna merah, maka tukar warna parent dan paman nya menjadi hitam, dan grand parent menjadi merah.

 

Picture2                         Picture3

Jika paman berwarna hitam, maka lakukan single rotation atau double rotation.

 

 

DELETION

 

Jika menghapus node berwarna merah, maka langsung hapus.

Jika menghapus node berwarna hitam, maka langsung hapus dan digantikan oleh anaknya, lalu ubah warnanya menjadi hitam.

Jika terjadi double black:

Picture4           Picture5          Picture6

 

 

2-3 TREE

Tree yang memungkinkan untuk memiliki 2 atau 3 data dlam sebuah node.

2-node : Node yang berisi 1 data dan mempunyai 2 child.

2node

3-node : Node yang berisi 2 data dan mempunyai 3 child.

3node

 

INSERTION

Data yang dimasukkan pasti masuk ke leaf.

Jika dimasukkan ke 2-node, maka langsung masukkan.

Jika dimasukkan ke 3-node, maka data tengah naik menjadi parent.

 

DELETION

Tentukan di node mana data yang ingin dihapus

Jika berada dalam 3-node, langsung hapus saja datanya.

Jika berada dalam 2-node:

I. Jika parent adalah 3-node: ambil satu data dari parent.

  • Jika sibling adalah 3-node, ambil salah satu datanya untuk dijadikan data parent.
  • Jika sibling adalah 2-node, buat parent menjadi 2-node dengan menggabungkan sibling dengan node tempat data didelete.

II. Jika parent adalah 2-node:

  • Jika sibling adalah 3-node, turunkan data parent ke node dan ambil satu data dari sibling untuk menggantikan parent.
  • Jika sibling adalah 2-node, gabungkan sibling dengan node yang dihapus datanya.

 

Rangkuman Struktur Data 6

0

AVL TREE

 

AVL Tree adalah BST yang memiliki perbedaan level maksimal 1 antara subtree kiri dan subtree kanan. AVL Tree berfungsi untuk menyeimbangkan(balance) BST. Dengan adanya AVL Tree, waktu pencarian dapat dipersingkat dan bentuk tree dapat disederhanakan.

 

Contoh AVL Tree:

AVLSample

 

Insertion dalam AVL Tree

Setiap penambahan sebuah node ke AVL Tree harus dilakukan pemeriksaan dari node baru ke root. Node pertama yang memiliki balance factor lebih dari 1 diseimbangkan. Proses penyeimbangan dibagi menjadi 2, yaitu Single Rotation dan Double Rotation.

 

Single Rotation

 

  • Left Rotation

avl_left_rotation

 

  • Right Rotation

avl_right_rotation

 

 

Double Rotation

 

  • Left-Right Rotation

 

1   Sebuah node dimasukkan ke subtree kanan dari subtree kiri.

 

2  Lakukan left rotation pada subtree kiri dari node C. A menjadi subtree kiri dari B.

 

3  Node C masih belum seimbang karena subtree kiri dari subtree kiri.

 

4  Lakukan right rotation sehingga B menjadi root, C menjadi subtree kanan dari subtree kirinya.

 

5 Tree menjadi seimbang.

 

 

  • Right-Left Rotation

 

6   Sebuah node dimasukkan ke subtree kiri dari subtree kanan.

 

7  Lakukan right rotation pada node C. C menjadi subtree kanan dari subtree kirinya. B menjadi subtree kanan dari A.

 

8   Node a masih belum seimbang.

 

9 Lakukan left rotation sehingga B menjadi root, A menjadi subtree kiri dari subtree kanan nya.

 

10 Tree menjadi seimbang.

 

 

Deletion dalam AVL Tree

Deletion dalam AVL Tree mirip dengan BST, hanya perlu diperhatikan keseimbangan tree seperti dalam insertion. Lakukan single atau double rotation setiap ada ketidakseimbangan.

 

 

GUEST LECTURE

Guest lecture: Selvakumar Manickam dari University of Science, Malaysia.

Guest lecture menjelaskan tentang Tree, BST, serta keektifannya.

 

DSO

 

Rangkuman Struktur Data 5

0

BINARY SEARCH TREE

Binary Search Tree (BST) adalah binary tree dimana sub tree sebelah kiri lebih kecil daripada parentnya.

Data pada BST sudah terurut sehingga mempermudah dalam proses pencarian.

height_balanced_tree

 

Operasi-operasi dalam BST:

1. Insert

Memasukkan data ke dalam BST. Data yang dimasukkan akan menjadi leaf.

Penempatan data yang dimasukkan akan mengikuti sifat BST, jika data lebih kecil dari parent maka akan ke kiri, jika lebih besar maka akan ke kanan, seterusnya hingga menempati posisi leaf.

BST_insertion

 

2. Delete

Menghapus data dalam BST.

  • Jika yang dihapus tidak mempunyai anak (leaf) , maka langsung hapus data tersebut

BST_delete_no_child

  • Jika yang dihapus mempunyai 1 anak, maka data dihapus, lalu sambungkan anak dari node yang dihapus dengan parent dari node tersebut.

BST_delete_one_child

  • Jika yang dihapus mempunyai 2 anak, digantikan oleh data paling kiri dari subtree kanan, atau sebaliknya.

BST_delete_two_child

 

3.  Search

Digunakan untuk mencari data dalam BST.

Step-stepnya:

– Dimulai dari root

– Jika data yang dicari sama dengan node, maka pencarian berakhir.

– Jika data lebih kecil dari node, maka:

  • Jika node mempunyai subtree kiri, maka lanjutkan pencarian ke subtree kiri
  • Jika tidak punya subtree kiri, pencarian berakhir, pencarian gagal.

– Jika data lebih besar dari node, maka:

  • Jika node mempunyai subtree kanan, maka lanjutkan pencarian ke subtree kanan
  • Jika tidak punya subtree kanan, maka pencarian berakhir, pencarian gagal.

– Ulangi step diatas sampai menemukan node yang dicari.

BST_search

andymuljoyos's RSS Feed
Go to Top