| 12345678910111213141516171819202122232425262728293031323334353637 | /** * Definition for a binary tree root. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func deleteNode(root *TreeNode, key int) *TreeNode {	if root == nil {		return nil	}	if root.Val == key {		if root.Left == nil && root.Right == nil {			return nil		} else if root.Left == nil {			return root.Right		} else if root.Right == nil {			return root.Left		} else {			min := findMin(root.Right)			root.Val, min.Val = min.Val, root.Val			root.Right = deleteNode(root.Right, key)		}	} else if key < root.Val {		root.Left = deleteNode(root.Left, key)	} else {		root.Right = deleteNode(root.Right, key)	}	return root}func findMin(root *TreeNode) (min *TreeNode) {	for min = root; min.Left != nil; min = min.Left {	}	return}
 |