编辑代码

//查找
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) {
        //root case
        if(current == root) {
            root = null;
        }
        //non root case
        else if(parent.left == current) {
            parent.left = null;
        }else {
            parent.right = null;
        }
    }

    //case 2: only one child
    else if(current.left == null || current.right == null) {
        //2.1 root case
        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;
            }
        }
    }
    //two children
    else {

    }
}