public boolean search(T val) {
if(root == null) {
return false;
}
Node<T> temp = root;
while(temp != null) {
if((val.compareTo(temp.value) == 0)) {
return true;
}else if((val.compareTo(temp.value) < 0)) {
temp = temp.left;
}else {
temp = temp.right;
}
}
return false;
}
public void delete(T val) {
if(root == null) {
return;
}
Node<T> parent = root;
Node<T> current = root;
while(current != null) {
if((val.compareTo(temp.value) == 0)) {
break;
}else if((val.compareTo(temp.value) < 0)) {
parent = current;
current = current.left;
}else {
parent = current;
current = current.right;
}
}
}
if(current != null) {
if(current.left == null && current.right == null) {
if(current == root) {
root = null;
}
else if(parent.left == current) {
parent.left = null;
}else {
parent.right = null;
}
}
else if(current.left == null || current.right == null) {
if (current == root) {
if(current.left != null) {
root = current.left;
}else {
root = current.right;
}
}else if(current == parent.left) {
if(current.left != null) {
parent.left = current.left;
}else {
parent.left = current.right;
}
}else {
if(current.left != null) {
parent.right = current.left;
}else {
parent.right = current.right;
}
}
}
else {
}
}