public TreeNode deleteNode(TreeNode root, int key) {
if(root==null) return root;
//key找到
if (root.val == key) {
//无左孩子也无右孩子
if (root.left == null && root.right == null) {
root=null;
return root;
}
//只有右孩子
else if(root.left == null){
root=root.right;
return root;
}
//只有左孩子
else if(root.right==null){
root=root.left;
return root;
}
//左孩子也有右孩子
else{
TreeNode temp=root;
temp=temp.left;
while(temp.right!=null){
temp=temp.right;
}
root.val=temp.val;
root.left= deleteNode(root.left,temp.val);
return root;
}
}
//key在左子树
else if(root.val>key){
root.left=deleteNode(root.left,key);
return root;
}
//key在右子树
else {
root.right=deleteNode(root.right,key);
return root;
}
}