//Insertion in binary tree
// Big O notation: O(height of BST)
//takes in a node to insert as val and the root element
if newNode.data < root.data
if root.left is null
root.left = newNode
else
recursively call self (newNode, root.left)
else
if root.right is null
root.right = newNode
else
recursively call self (newNode, root.right)
//Deletion in binary tree
// Big O notation: O(height of BST)
//takes in value to delete and a root node
if value < root.data
root.left = recursively call self(value, root.left)
return root
else if value > root.data
root.right = recursively call self(value, root.right)
return root
else
if root.left equals null and root.right equals null
root = null
return root
if root.left equals null
return root.right
if root.right equals null
return root.left
aux = root.right
while aux.left not equals null
aux = aux.left
root.data = aux.data
root.right = recursively call self(aux.data,root.right)
return root
//Traversal
// Big O notation: O(height of BST)
//returns all the values in a tree
//takes in root element
if root equals null
return
result = result + root.data + " "
if root.left not equals null
recursively call self(root.left)
if root.right not equals null
recursively call self(root.right)
return result
//takes in root and value to search
//returns found or not
found = false
while root not equals null and not found
if value < root.data
root = root.left;
found = recursively calls self(root, value);
else if value > root.data
root = root.right;
found = recursively calls self(root, value);
else
found = true
break
return found