删除BST中确定node

105 阅读1分钟
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func deleteNode(root *TreeNode, key int) *TreeNode {
    if root == nil{
        return root
    }
    if root.Val == key{
        if root.Left == nil {
            return root.Right
        }
        if root.Right == nil {
            return root.Left
        }
        minNode := root.Right
        for minNode.Left != nil {
            minNode = minNode.Left
        }
        root.Val = minNode.Val
        root.Right = deleteNode(root.Right, minNode.Val)
        return root
    }
    if root.Val < key{
        root.Right =  deleteNode(root.Right, key)
        return root
    }else{
        root.Left = deleteNode(root.Left, key)
        return root
    }
}