Friday, March 20, 2020

Tugas Minggu ke 4 Libur Covid 

(Ko kemarin saya sudah upload 003 tulisan nya udah keupload tapi gatau nya ga ke up
gimana ya?? yang 003 bisa saya reupload)



Binary Search Tree (BST) sama seperti binary tree, yaitu masing - masing node maksimal memiliki 2 anak. Yang membedakannya ialah nilai node di kiri harus lebih kecil daripada di kanan.

Kelebihan BST:
1. Lebih mudah dalam melakukan pencarian data. 
2. Proses melihat data lebih mudah.
3. Mudah dalam penyimpanan dalam data bentuk hirarki.


SEARCHING
 while(current->data != data){
      if(current != NULL) {
         printf("%d ",current->data); 
         if(current->data > data){  //ke kiri tree
            current = current->leftChild;
         } 
         else {        //ke kanan tree       
            current = current->rightChild;
         }
         if(current == NULL){ //tidak ditemukan
            return NULL;
         }
      }   
   }
    
return current;


INSERT SINGLE LINKED LIST
void push(struct *tree node, int a){
    if(root==NULL){ //belum pernah terbentuk
        root = newNode(a); //pesan memori malloc
    }

    else if(a < node->a && node->left==NULL){ //kalau yang mau diinput lebih kecil daripada sekarang, dan sebelah kirinya kosong
        node->left = newNode(a); //pesen malloc
        node->left->parent = node; //parent di node sekarang
    }

    else if(a > node->a && node->right==NULL){ //kalau yang diinput lebih besar daripada sekarang, dan sebelah kanannya kosong
        node->right = newNode(a); //pesen malloc
        node->right->parent = node; //parent di node sekarang yg kanan
    }

    else if(a < node->a){ //yang diinput lebih kecil daripada sekarang, tapi kiri kanan tidak kosong
        push(node->left, a); //akan ditaruh di kiri
    }

    else{ //yang diinput lebih besar daripada sekarang, kiri kanan tidak kosong
        push(node->right, a); //akan ditaruh di kanan
    }
}


DELETE
//untuk node yang belum memiliki anak, atau node terbawah
 

//node yang mau dihapus hanya memiliki anak kiri, tidak punya anak kanan
 

//node yang mau dihapus hanya memiliki anak kanan
 
//punya anak kanan dan kiri, digantikan oleh anak kiri yang paling besar nilainya. kemudian yg menggantikan dihapus lagi (recursive)



 



Sumber:
http://jagocoding.com/tutorial/246/Tutorial_Tree_Binary_Search_Tree 
https://socs.binus.ac.id/2017/05/10/implementasi-delete-pada-binary-search-tree/
https://socs.binus.ac.id/2017/05/10/implementasi-insert-pada-binary-search-tree-dengan-single-dan-double-pointer/ 
https://www.tutorialspoint.com/data_structures_algorithms/binary_search_tree.html

No comments:

Post a Comment