delete bts

by raviteja gunda

JavaScript

function delete_from_bst(root, values_to_be_deleted) {
    // Write your code here.
    if(root == null){
        return root;
    }

    
    for(let i=0; i < values_to_be_deleted.length; i++){
        var prev;
        let nodes = search(root,values_to_be_deleted[i],prev);
        let element = nodes[0];
        prev = nodes[1];
        console.log('element', element);
        console.log('prev', prev);
        
        if(element.left == null && element.right == null ){
            if(prev.left == element){
                prev.left = null;
            }else{
                prev.right = null;
            }
        }
        else if(element.left != null && element.right != null){
            let succ = successor(root,element);
            console.log("root", root);
            console.log("prev", prev);
            console.log("succ", succ);
            let max = maxNode(succ);
            console.log("max", max);
            prev.right = succ;
            succ.left = element.left;
            max.right = element.right;
        }
        else {
          console.log('third if');
            if(element.left != null ){
                prev.left = element.left;
            }else if(element.right != null){
                prev.right = element.right;
            }
        }
        
    }
    
    return root;
    
}

function maxNode(succ) {
  console.log(succ);
  if(succ.right == null) {
    return succ;
  }
  while(succ.right != null) {
    return maxNode(succ.right);
  }
  return succ;
}

function search(root,value,prev){
    if(root == null){
        return false;
    }
    
    if(root.value == value){
        return [root, prev];
    }else if(value < root.value){
        prev = root;
        return search(root.left,value, prev);
    }else{
        prev = root;        
        return search(root.right,value, prev);
    }
}

function successor(root,value){
    if(root == null){
        return;
    }

    if(value.right != null){
        let curr =...