题解 | #删除一个二叉搜索树中的节点#

删除一个二叉搜索树中的节点

https://www.nowcoder.com/practice/c1c2970c7a3e442b8e41423e88d099fb

package main

import . "nc_tools"
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @param key int整型 
 * @return TreeNode类
*/
func deleteNode( root *TreeNode ,  key int ) *TreeNode {
    if root == nil {
        return nil
    }
    // write code here
    if key < root.Val {
        root.Left = deleteNode(root.Left, key)
    } else if key > root.Val {
        root.Right = deleteNode(root.Right, key)
    } else if key == root.Val{
        if root.Left != nil && root.Right != nil {
            newRoot := root.Right
            root.Right = newRoot.Left
            newRoot.Left = deleteNode(root, key)
            return newRoot
        } else if root.Left != nil {
            return root.Left
        } else if root.Right != nil {
            return root.Right
        } else {
            return nil
        }
    }
    return root
}

全部评论

相关推荐

点赞 评论 收藏
分享
爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务