Sunday, April 18, 2021

Visualisasi data

 Selamat Datang

Perkenalkan kami dari Universitas Bina Nusantara dari Jurusan Computer Science yang beranggotakan Rizki Ashari, Kenisya Fudika, Andika Rinalbi Ismail, Fannisa Rahmah. Muhammad Fachri Akbar. kami ingin memvisualisasikan data yang menurut kami pemilihan diagram sudah sesuai dengan tujuan dan membantu menjelaskan kepada pembaca, visualisasinya sebagai berikut:

1.    Film TV


Alasan:

a.    Drama Genre in Several Countries: Visualisasi data menggunakan diagram map/peta untuk mengetahui penyebaran jenis drama sudah ada di negara mana saja serta sebagai analisa negara yang memiliki produksi paling banyak di antara negara lain.  

b.    The Number of Votes for Drama Genre Films Released in 2010 to 2020: Visualisasi data menggunakan diagram treemap untuk mengidentifikasi ruang lingkup dari jumlah ketertarikan (Votes) drama dari tahun 2010 hingga 2020.

c.    Director of Drama Film That was in Vietnam From 2010 to 2020: Visualisasi data menggunakan diagram gantt, untuk mengetahui director genre drama di negara Vietnam dari tahun 2010 sampai 2020. 

2.    Production Movie Company

Alasan:

a.    Visualisasi data menggunakan diagram horizontal bar’s digunakan untuk membandingkan data antar kategori dan melihat frekuensi atau besaran dari kategori/variabel.

b.    Visualisasi data menggunakan diagram area’s (continuous) digunakan untuk melihat produktivitas perusahaan yang menghasilkan film/movie dari tahun ke tahun.

3.    Increased budget

Alasan:

a.      Movie Budget: visualisasi data menggunakan diagram batang untuk memudahkan pembaca melihat data perbandingan pengeluaran produksi setiap movie dengan cara lebih sederhana, menggunakan filter budget.

b.      Budget Growth: visualisasi data menggunakan diagram garis untuk mempermudah pengamatan budget yang dialami setiap tahun secara berurutan.

4.    Salary of Director Movie

Alasan:

a.      Film Hit: visualisasi data menggunakan diagram batang untuk perbandingan jumlah film yang paling banyak di tonton oleh semua kalangan penikmat film.

b.      Salary of Director Movie: visualisasi data menggunakan diagram batang untuk perbandingan salary director yang mendapatkan salary paling tinggi.

5.    Streaming Movie

Alasan:

a.    Movie Produced: visualisasi data menggunakan diagram garis (Continuous) untuk melihat fluktuasi dari suatu data produksi movie oleh setiap perusahaan.

b.    Movie Recommeded for Selected Age Groups: Visualisasi data menggunakan diagram batang untuk membagi usia yang paling sering menonton acara di aplikasi tersebut.



Semoga dapat membantu pengertian visualisasi data dari segi desain maupun penyampaian.

Sekian Terimakasih. 

Friday, November 20, 2020

Sinopsis: Animasi Pertengkaran

Budi adalah seorang pelajar yang suka menari di tengah jalan. Harun yang sedang melihat Budi menari, dia merasa terganggu karena Budi menari di tengah jalan, lalu Harun menegur si Budi. Herman adalah teman deket Budi, lalu Herman membela Budi. Kemudian Herman dengan Harun saling bertukar opini satu sama lain. 

Herman:  "Lu kenapa marah dah".
Harun   :  "Lah itu loh, gue ga suka liat si Budi menari di tengah jalan".
Herman:  "Suka-suka die dong, die kan punya hak yang sama di sini".
Harun   :  "Iya si, tapi ganggu banget dah, gue jadi risih lihatnya".
Herman:  "Kalau risih pergi dari sini aja dah".
Harun   :  "Oke kalau gitu".

Kemudian Harun pergi dari hadapan Herman dan Budi.

Selesai

Tunggu Update Chapter selanjutnya......

Tuesday, June 9, 2020

Final Review

Rizki Ashari
2301900744
Hari : Selasa, 9 Juni 2020
Kelas : CB01-CL
Lecturer : Ferdinand Ariandy Luwinda (D4522) , Henry Chong (D4460)


AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/ level maksimal 1 antara subtree kiri dan subtree kanan. AVL Tree muncul untuk menyeimbangkan Binary Search Tree. Dengan AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.


Gambar BST 

digambar tersebut sudah menjadi AVL Tree, Tree sudah sesuai dengan syarat menjadi AVL Tree, Tree nya sudah balance antara satu dan lain.

Untuk memeriksa Tree tersebut sudah balance atau tidak, dengan cara [balance faktor] > 1, ditiap node di cek kedalamnya, digambar node 7 sisi kiri 2 dan sisi kanan 3, maka antara sisi kiri dan kanan dikurangkan kedalam nya (3-2= 1) , nah selanjutnya cek masing-masing node tree ya, apakah tidak >1 jika iya semua 1 atau 0 maka sudah di sebut AVL Tree



di AVL Tree ada 2 cara rotation dalam mencari balance Tree:
1. Single Rotation
    a. Left Left Rotation
    b. Right Right Rotation



contoh Single Rotation

2. Double Rotation
    a. Right Left Rotation
    b. Left Right Rotation



Left-Right



Right-Left

Delete node di AVL Tree

Delete node di AVL Tree sama percis dengan Binary Search Tree, yaitu node yang dihapus digantikan oleh node tersebar pada subtree kiri atau node terkecil pada subtree kanan. Jika yang dihapus leaf maka langsung di hapus. Namun jika node yang ingin di hapus memiliki anak maka anaknya yang menggantikannya. Pada saat delete pun harus di cek kembali, apakah tree tersebut sudah balance atau tidak. Jika belum maka lakukan proses Rotation. 

Pengertian Heap...
Heap adalah Sebuah Complete Binary Tree yang memenuhi persyaratan heap. nah di heap terbagi 3 yaitu, Min Heap, Max Heap, dan Min-Max Heap

-Min Heap
urutan berdasarkan Array yang diberikan, Tree di mulai dari angka terkecil karena Min Heap

-Max Heap













urutan berdasarkan Array yang diberikan, Tree di mulai dari angka terbesar karena Max Heap.

- Min Max Heap



Urutan Array dari 2, 33, 36, 5, 4, 8


2. Tries

Tries yang tadi saya pelajari, Tries semacam penampung karakter agar suatu game dalam mencari kata-kata tidak usah repot-repot mencari sebanyak kalimat.


referensi :
http://apalah-ini-itu.blogspot.com/2011/06/heap.html
PPT : Binus (Data Structure)


Tuesday, May 12, 2020

Heap & Tries

Belajar di minggu ini ialah Heap
Pengertian Heap...
Heap adalah Sebuah Complete Binary Tree yang memenuhi persyaratan heap. nah di heap terbagi 3 yaitu, Min Heap, Max Heap, dan Min-Max Heap

-Min Heap
urutan berdasarkan Array yang diberikan, Tree di mulai dari angka terkecil karena Min Heap

-Max Heap













urutan berdasarkan Array yang diberikan, Tree di mulai dari angka terbesar karena Max Heap.

- Min Max Heap




Urutan Array dari 2, 33, 36, 5, 4, 8


2. Tries

Tries yang tadi saya pelajari, Tries semacam penampung karakter agar suatu game dalam mencari kata-kata tidak usah repot-repot mencari sebanyak kalimat.


referensi :
http://apalah-ini-itu.blogspot.com/2011/06/heap.html

PPT Data Structure Binus







Tuesday, April 28, 2020

AVL Tree

Materi kali ini AVL Tree

Apa itu AVL Tree ??
AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/ level maksimal 1 antara subtree kiri dan subtree kanan. AVL Tree muncul untuk menyeimbangkan Binary Search Tree. Dengan AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.


Gambar BST 

digambar tersebut sudah menjadi AVL Tree, Tree sudah sesuai dengan syarat menjadi AVL Tree, Tree nya sudah balance antara satu dan lain.

Untuk memeriksa Tree tersebut sudah balance atau tidak, dengan cara [balance faktor] > 1, ditiap node di cek kedalamnya, digambar node 7 sisi kiri 2 dan sisi kanan 3, maka antara sisi kiri dan kanan dikurangkan kedalam nya (3-2= 1) , nah selanjutnya cek masing-masing node tree ya, apakah tidak >1 jika iya semua 1 atau 0 maka sudah di sebut AVL Tree



di AVL Tree ada 2 cara rotation dalam mencari balance Tree:
1. Single Rotation
    a. Left Left Rotation
    b. Right Right Rotation



contoh Single Rotation

2. Double Rotation
    a. Right Left Rotation
    b. Left Right Rotation



Left-Right



Right-Left

Delete node di AVL Tree

Delete node di AVL Tree sama percis dengan Binary Search Tree, yaitu node yang dihapus digantikan oleh node tersebar pada subtree kiri atau node terkecil pada subtree kanan. Jika yang dihapus leaf maka langsung di hapus. Namun jika node yang ingin di hapus memiliki anak maka anaknya yang menggantikannya. Pada saat delete pun harus di cek kembali, apakah tree tersebut sudah balance atau tidak. Jika belum maka lakukan proses Rotation. 




referensi : 
PPT : Binus (Data Structure)








Tuesday, March 31, 2020

Review Materi

Oke sampailah materi di bagian review materi sebelum UTS, materi UTS nanti akan membahas Linked list Single maupun Doubly;Stack, dan queue; hashing; Tree/Binary Tree; Binary Search Tree.

1. Single Linked List
saya hanya membahas dari segi pengimplementasi saja, okee langsung saja

pertama kita buat Struct data untuk menyimpan data, di Single kita hanya menggunakan next sebagai petunjuk dan head sebagai kepala dan tail sebagai data terakhir.

struct data{
int angka;
char name[100];
data *next;
}*head,*tail ;

Setelah itu membuat memory allocate agar komputer menyediakan memory yang pas dan tidak kurang,  dan saat di malloc sebelum nya harus di type casting.

data* newData(char name[],int angka){
data* curr =(data*)malloc(sizeof(data));
curr->angka=angka;
strcpy(curr->name,name);
curr->next=NULL;
return curr;
}

sekarang kita sudah memesan memori ke komputer kita, setelah itu kita buat push Depan,

void pushHead(data *curr){
if(head==NULL){
head=tail=curr;
}else{
curr->next=head;
head=curr;
}
}
penjelasan code ya tersebut adalah kondisi awal data tersebut sama dengan NULL maka head=tail=curr dalam satu tempat, kondisi else ya adalah kita ingin memasukkan data dan menyambungkan data tersebut maka kita membutuhkan curr->next = head, current ke next diubah mejadi head, dan head diubah ke curr.

Setelah itu kita buat push Belakang,

void pushTail(data *curr){
if(head==NULL){
head=tail=curr;
}else{
tail->next=curr;
tail=curr;
}
}

kondisi awal sama seperti push Depan, dan kondisi else ya tail ke next diubah menjadi curr dan tail menjadi curr.

oke lanjut ke Pop/delete

pertama delete Head/depan.
void popHead(){
if(head==tail){
head=tail=NULL;
free(head);
}else{
data *temp = head;
head=head->next;
temp->next=NULL;
free(temp);
                temp = NULL;
}
}

kedua delete Belakang/tail
void popTail(){
if(head==tail){
head=tail=NULL;
free(head);
}else{
data *temp=head;
while(temp->next!=tail){
temp=temp->next;
}
free(tail);
tail=temp;
tail->next=NULL;
}
}

dalam implementasikan harus membuat function untuk print sebagai berikut:
void printAll(){
data *temp=head;
while(temp!=NULL){
printf("%d %s\n",temp->angka,temp->name);
temp=temp->next;
}
}

2. Double Linked List
di doubly sedikit berbeda dengan single karena di double ini memiliki tambahan petunjuk prev. oke langsung pengimplementasi saja. sama aja ya harus membuat struct dan malloc (memory alloce), saya di sini langsung membahas ke push dan pop aja.

struct data{
int angka;
char name[101];
data *next, *prev;
}*head,*tail;

data *newData(char name[],int angka){
data *curr =(data*)malloc(sizeof(data));
curr -> angka=angka;
strcpy(curr->name,name);
curr -> prev = curr -> next = NULL;
return curr;
}

push Depan
void pushHead(data *curr)
{
if(head==NULL)
{
head = tail = curr;
}
else
{
head -> prev=curr;
curr -> next=head;
head = curr;
}
}

Push Belakang
void pushTail(data *curr)
{
if(head==NULL)
{
head=tail=curr;
}
else
{
tail -> next=curr;
curr-> prev= tail;
tail = curr;
}
}

Pop Depan
void popHead()
{
if(head==tail)
{
head=tail=NULL;
free(head);
}
else
{
data*temp=head;
head=head->next;
temp->next=NULL;
free(temp);
}
}

Pop Belakang
void popTail()
{

if(head==tail)
{
head=tail=NULL;
free(tail);
}
else
{
data*temp=tail;
tail=tail->prev;
tail->next=NULL;
free(temp);
}
}

Pop Semua nya
void popAll()
{
while(head!=NULL)
{
popHead();
}
}

print data
void printAll()
{
data *temp=head;
while(temp != NULL)
{
printf("%s %d\n",temp->name, temp->angka);
temp = temp->next;
}
}

3. Stack & Queue
a. Stack ini sama aja dengan linked list, ini sistem ya LIFO
sistem ya Last in First Out, maka dari menggunakan push Tail dan pop Tail
b. Queue sistem ya FIFO ( First In First Out), maka menggunakan Push Head dan Pop Head

4. Hashing
materi ini langsung ke implementasi saja
a. hashing secara linear Probling
const int tableSize = 27;
char hashTable[tableSize][100];
int generateKey(char *name)//SmallCase{
int result = name[0] - 'a';
return result;
}

void insert(char *name){
int idx = generateKey(name);
strcpy(hashTable[idx],name);
}

void print(){
for(int i=0;i<tableSize;i++){
printf("[%-2d] : %s\n",i, hashTable[i]);
}
}

b. hashing secara Chaining
struct tnode{
char name[100];
int key;
struct tnode *next;
};

struct hashPool{
struct tnode *head;
struct tnode *tail;
};

const int tableSize = 97;
struct hashPool hashTable[tableSize];

int generateKey(const char *name){
int result = 0;
int len=strlen(name);
for(int i=0;i<len;i++){
result += name[i];
}
return result % tableSize;
}

struct tnode *newNode(const char *name){
struct tnode *curr =(struct tnode*)malloc(sizeof(struct tnode));
strcpy(curr->name,name);
curr->key=generateKey(name);
curr->next=NULL;
return curr;
}

void insert(struct tnode *node){
if(hashTable[node->key].head==NULL){
hashTable[node->key].head=hashTable[node->key].tail=node;
}
else{
hashTable[node->key].tail->next=node;
hashTable[node->key].tail=node;
}
}

void print(){
for(int i=0;i<tableSize;i++){
printf("[%2d] : ",i);
tnode *curr = hashTable[i].head;
while(curr){
printf("%-10s ->",curr->name);
curr=curr->next;
}
printf("NULL\n");
}
}

5. Tre/Binary Tree
struct data{
int value;
data *left;
data *right;
};

struct data *newData(int value){
data *curr=(data*)malloc(sizeof(data));
curr->value=value;
curr->left=NULL;
curr->right=NULL;
return curr;
}

void inOrder(data *root){
         if(root){
inOrder(root->left);
printf("%d ",root->value);
inOrder(root->right);
}
}
void preOrder(data *root){
if(root){
printf("%d ",root->value);
preOrder(root->left);
preOrder(root->right);
}
}

void postOrder(data *root){
if(root){
postOrder(root->left);
postOrder(root->right);
printf("%d ", root->value);
}
}

struct data *freeAll(data *root){
if(root){
freeAll(root->left);
freeAll(root->right);
free(root);
root=NULL;
}
return root;
}

6. Binary Search Tree
struct data{
    int umur;
    struct data *left;
    struct data *right;
};

struct data* newData(int umur){
    struct data* newNode = (struct data*)malloc(sizeof(struct data));
    newNode->umur = umur;
    newNode->left = NULL;
    newNode->right = NULL;
    return newNode;
}

struct data* insertion(struct data* root,int umur){
    struct data* temp = newData(umur);
    if(root == NULL) root = temp;
    else if(umur  > root->umur) root->right = insertion(root->right,umur);
    else if(umur < root->umur) root->left = insertion(root->left, umur);
    return root;
}

void printAll(struct data* root){
    if(root == NULL) return;
    printAll(root->left);
    printf("%d\n",root->umur);
    printAll(root->right);
}

struct data* minValue(struct data* root){
    while(root->left!=NULL){
        root = root->left;
    }
    return root;
}

struct data* delete(struct data* root,int umur){
    if(root == NULL) printf("Tidak ada data\n");
    else if(umur > root->umur) root->right = delete(root->right, umur);
    else if(umur < root->umur) root->left = delete(root->left, umur);
    else{
        if(root->left == NULL && root->right == NULL){
            free(root);
            root = NULL;
        }
        else if(root->left == NULL){
            struct data* temp = root;
            root = root->right;
            free(temp);
        }
        else if(root->right == NULL){
            struct data* temp = root;
            root = root->left;
            free(temp);
        }
        else{
            struct data* temp = minValue(root->right);
            root->umur = temp->umur;
            root->right = delete(root->right, temp->umur);
        }
    }
    return root;
}

oke selesai materi review kali ini, oke saya kasih contoh kasus atau case : Shop Case, kita dimampukan untuk membeli barang, mengedit jumlah barang, dan menghapus barang. Semua barang yang kita beli akan otomatis tersorting.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

int totalBarang = 0;

struct Shop{
char barang[100];
int Qty;
int harga;

Shop *prev, *next;
}*head,*tail;

struct Shop *newShop(const char *barang, int Qty)
{
Shop *curr = (Shop *)malloc(sizeof(Shop));
strcpy(curr->barang,barang);
curr->Qty = Qty;
curr->harga = (rand()%100)*1000;
curr->next = NULL;
curr->prev = NULL;
return curr;
}

void pushShop(Shop *curr)
{
if(head==NULL)
{
head=tail=curr;
}
else if (strcmp(curr->barang,head->barang)<0)
{
curr->next = head;
head->prev = curr;
head = curr;
}
else if(strcmp(curr->barang,tail->barang)>0)
{
tail->next = curr;
curr->prev = tail;
tail = curr;
}
else
{
Shop *temp = head;
while(strcmp(curr->barang,temp->barang)>0)
{
temp = temp->next;
}
curr->next = temp;
curr->prev = temp->prev;
temp->prev->next = curr;
temp->prev = curr;
}
}

void update(int ID, int Qty)
{
Shop *temp = head;
int count = 1;
while(count != ID)
{
temp = temp->next;
count++;
}
temp->Qty = Qty;
temp->harga = (rand()%100)*1000;
}

void Delete(int input)
{
int count = 1;
Shop *temp = head;
if(input == 1)
{
if(head==tail)
{
head=NULL;
free(temp);
}
else
{
head = head->prev;
head->prev = NULL;
free(temp);
temp = NULL;
}
}
else if(input == totalBarang && totalBarang != 1)
{
temp = tail;
tail = tail->prev;
tail->next = NULL;
free(temp);
temp = NULL;
}
else
{
while(count != input-1)
{
temp = temp->next;
count++;
}
Shop *curr = temp->next = curr->next;
temp->next->prev = temp;
free(curr);
curr = NULL;
}
totalBarang--;
}

void cetak()
{
int count = 1;
while(head!=NULL)
{
printf("%-15d | %-20s | %-5d | %-7d\n",count,head->barang,head->Qty,head->harga);
head = head->next;
count++;
}
puts("");
}

void buy()
{
system("cls");
char barang[100];
int Qty;
printf("Input Produk Nama: ");
scanf("%[^\n]",barang);getchar();
printf("Input Produk Qty: ");
scanf("%d",&Qty);getchar();

pushShop(newShop(barang,Qty));
printf("Data berhasil ditambahkan\n");
totalBarang++;
getchar();
}

void DeleteBarang()
{
system("cls");
int ID;
cetak();
printf("Input Id to deleted: ");
scanf("%d",&ID);
Delete(ID);
printf("Item berhasil di delete\n");getchar();
}

void editBarang(){
system("cls");
int ID;
int Quality;
cetak();
printf("Input Id to updated: ");
scanf("%d", &ID) ; getchar();
printf("Input new quantity: ");
scanf("%d", &Quality) ; getchar();
update(ID,Quality);
printf("Item berhasil di update\n") ; getchar() ;
}

void PrintHasil()
{
system("cls");
printf("Jumlah Harga\n");
printf("==============\n");
cetak();
printf("Total: \n");
printf("Harga Free\n");getchar();
Shop *temp = head ;
while(temp != NULL){
Shop *curr = temp ;
temp = temp->next ;
free(curr) ;
curr=NULL;
}
exit(0);
}

int main()
{
srand(time(0));

int chose;
do
{
printf("Rizki Ashari Shop\n");
printf("====================\n");
cetak();
printf("1. Buy Item\n");
printf("2. Edit Item Qty\n");
printf("3. Delete Item\n");
printf("4. Print Bill\n");
printf("5. Exit\n");
printf("Choose >> ");
scanf("%d",&chose);getchar();
if(chose == 1)
{
buy();
}
else if(chose == 2)
{
editBarang();
}
else if(chose == 3)
{
DeleteBarang();
}
else if(chose == 4)
{
PrintHasil();
}
else if(chose == 5)
{
printf("Thank You to Order\n");
}
}while(chose!=5);
return 0;

}

sumber materi : PPT BINUS

Tuesday, March 17, 2020

Binary Search Tree

Materi kali saya akan  membahas mengenai Binary Search Tree, yang saya terima dari dosen saya yang tercinta hehe sedikit lebay gapapa ya, dosen Henry Chong dan berbagai sumber yang saya dapatkan di internet, ah jadi berbelit-belit gini kan yaudah sorry ya, gue cepetin deh ke materi ya, okee cikedoot couuuyy

Binary Search Tree ialah yang terurut (ordered Binary Tree). Binary Search Tree juga sering disebut dengan Sorted Binary Tree yang berfungsi untuk menyimpan informasi nama atau bilangan yang disimpan di dalam memory.

di Binary Search Tree/BST ini memiliki induk atau sering disebut root, dan memiliki anak akar, sibling dll. 

Binary search tree memungkinkan pencarian dengan cepat, penambahan, juga menghapus data yang ada di dalamnya, bisa juga digunakan sebagai implementasi sejumlah data dinamis, atau pencarian table data dengan menggunakan informasi kunci atau key.
Agar data benar-benar tersusun dalam struktur data BST, dua aturan yang harus dipenuhi pada saat data diatur dalam BST adalah sebagai berikut:

- Semua data dibagian kiri sub-tree dari node t selalu lebih kecil dari data dalam node utama itu        sendiri.
- Semua data dibagian kanan sub-tree dari node t selalu lebih besar atausama dengan data dalam node utama.


di BST ini memiliki 3 operasi dasar yaitu:
1. Remove : memasukan value baru x ke BST ( Push ).
2. Find : find value x didalam BST ( Search ).
3. Insert : menghapus key x dari BST ( Delete ).

Operasi : Find BST

Dengan adanya ciri” atau syarat di dalam BST , maka untuk finding/searching didalam BST menjadi lebih mudah. Bayangkan kita mencari value x.
  • Memulai Pencarian Dari Root
  • Jika Root adalah value yang kita cari , maka berhenti
  • Jika x lebih kecil dari root maka cari kedalam rekrusif tree sebelah kiri
  • Jika x lebih besar dari root maka cari kedalam rekrusif tree sebelah kanan

Operasi: Insertion BST

Memasukan value (data) baru kedalam BST dengan rekrusif
Bayangkan kita menginsert value x :
  • Dimulai dari root
  • jika x lebih kecil dari node value(key) kemudian cek dengan sub-tree sebelah kiri lakukan pengecekan secara berulang ( rekrusif )
  • jika x lebih besar dari node value(key) kemudian cek dengan sub-tree sebelah kanan lakukan pengecekan secara berulang ( rekrusif )
  • Ulangi sampai menemukan node yang kosong untuk memasukan value X ( X akan selalu berada di paling bawah biasa di sebut Leaf atau daun )

Operasi: Delete

akan ada 3 case yang ditemukan ketika ingin menghapus yang perlu diperhatikan :
  • Jika value yang ingin dihapus adalah Leaf(Daun) atau paling bawah , langsung delete
  • Jika value yang akan dihapus mempunyai satu anak, hapus nodenya dan gabungkan anaknya ke parent value yang dihapus
  • jika value yang akan di hapus adalah node yang memiliki 2 anak , maka ada 2 cara , kita bisa cari dari left sub-tree anak kanan paling terakhir(leaf) (kiri,kanan).
okee segitu dulu yak materi kali ini sekian dah terima kasih


Sumber :
https://sourcecodegeneration.blogspot.com/2018/08/pengertian-binary-tree-binary-search.html
https://abdilahrf.github.io/2015/06/pengenalan-binary-search-tree/

Visualisasi data

 Selamat Datang Perkenalkan kami dari Universitas Bina Nusantara dari Jurusan Computer Science yang beranggotakan  Rizki Ashari,  Kenisya Fu...