给定一棵具有不同节点值的二叉查找树,删除树中与给定值相同的节点。如果树中没有相同值的节点,就不做任何处理。你应该保证处理之后的树仍是二叉查找树。
public class Solution { /* * @param root: The root of the binary search tree. * @param value: Remove the node with given value. * @return: The root of the binary search tree after removal. */ public TreeNode removeNode(TreeNode root, int value) { // write your code here if (root == null) { return root; } if (root.val > value) { root.left = removeNode(root.left, value); } if (root.val < value) { root.right = removeNode(root.right, value); } if (root.val == value) { if (root.left == null || root.right == null) { root = (root.left != null) ? root.left : root.right; } else { TreeNode tmpNode = root.left; while (tmpNode.right != null) { tmpNode = tmpNode.right; } root.val = tmpNode.val; root.left = removeNode(root.left, tmpNode.val); } } return root; } }