public class DeleteNumInBST {
public static void main(String[] args) {
TreeNode root = new TreeNode(5);
root.left = new TreeNode(2);
root.right = new TreeNode(6);
root.left.left = new TreeNode(1);
root.right.right = new TreeNode(7);
root.left.right = new TreeNode(4);
root.left.right.left = new TreeNode(3);
TreeNode node = delete(root, 2);
System.out.println(node.left.val);
}
static TreeNode delete(TreeNode node, int num) {
if (node == null) return null;
if (node.val == num) {
if (node.left == null && node.right == null) return null;
if (node.left == null) return node.right;
if (node.right == null) return node.left;
TreeNode minNode = getMin(node.right);
node.val = minNode.val;
node.right = delete(node.right, minNode.val);
} else if (node.val > num) {
node.left = delete(node.left, num);
} else if (node.val < num) {
node.right = delete(node.right, num);
}
return node;
}
static TreeNode getMin(TreeNode node) {
while (node.left != null) {
node = node.left;
}
return node;
}
}