**700. 二叉搜索树中的搜索(入门)**

Untitled

public TreeNode searchBST(TreeNode root, int val) {
    if(root == null) return null;
    if(root.val > val) return searchBST(root.left, val);
    else if(root.val < val) return searchBST(root.right, val);
    return root;
}

**450. 删除二叉搜索树中的节点优秀题解)**

Untitled

public TreeNode deleteNode(TreeNode root, int key) {
    if(root == null) return null;
    // 如果目标节点大于当前节点值,则去右子树中删除
    if(key > root.val) root.right = deleteNode(root.right, key);
    // 如果目标节点小于当前节点值,则去左子树中删除
    else if(key < root.val) root.left = deleteNode(root.left, key);
    else {
        // 其无左子: 其右子顶替其位置,删除了该节点
        if(root.left == null) return root.right;
        // 其无右子: 其左子顶替其位置,删除了该节点
        if(root.right == null) return root.left;
        // 否则:其左子树转移到其右子树的最左节点的左子树上,然后右子树顶替其位置由此删除了该节点。
        TreeNode cur = root.right;
        while(cur.left != null) {
            cur = cur.left;
        }
        cur.left = root.left;

        return root.right;
    }
    return root;
}