题解 | #删除一个二叉搜索树中的节点#
删除一个二叉搜索树中的节点
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 }