var lowestCommonAncestor = function(root, p, q) {
if(!root) return null
if(root.val > p.val && root.val > q.val){
let left = lowestCommonAncestor(root.left,p,q)
if(left) return left
}
if(root.val < p.val && root.val < q.val){
let right = lowestCommonAncestor(root.right,p,q)
if(right) return right
}
return root
};
var insertIntoBST = function(root, val) {
let point = root
while(point){
if(val < point.val){
if(!point.left){
point.left = new TreeNode(val)
point = null
}else{
point = point.left
}
}else{
if(! point.right){
point.right = new TreeNode(val)
point = null
}else{
point = point.right
}
}
}
return root ? root : new TreeNode(val)
};
var deleteNode = function(root, key) {
if(!root) return null
if(root.val === key){
if(!root.left && !root.right){
return null
}else if(!root.left && root.right){
return root.right
}else if(root.left && !root.right){
return root.left
}else{
let insertPosition = root.right
while(insertPosition.left){
insertPosition = insertPosition.left
}
insertPosition.left = root.left
return root.right
}
}
return new TreeNode(root.val,deleteNode(root.left,key),deleteNode(root.right,key))
};