2023-12-09 18:42:21 +08:00
< p > Given a root node reference of a BST and a key, delete the node with the given key in the BST. Return < em > the < strong > root node reference< / strong > (possibly updated) of the BST< / em > .< / p >
2022-03-27 18:35:17 +08:00
< p > Basically, the deletion can be divided into two stages:< / p >
< ol >
< li > Search for a node to remove.< / li >
< li > If the node is found, delete the node.< / li >
< / ol >
< p > < / p >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 1:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< img alt = "" src = "https://assets.leetcode.com/uploads/2020/09/04/del_node_1.jpg" style = "width: 800px; height: 214px;" / >
< pre >
< strong > Input:< / strong > root = [5,3,6,2,4,null,7], key = 3
< strong > Output:< / strong > [5,4,6,2,null,null,7]
< strong > Explanation:< / strong > Given key to delete is 3. So we find the node with value 3 and delete it.
One valid answer is [5,4,6,2,null,null,7], shown in the above BST.
Please notice that another valid answer is [5,2,6,null,4,null,7] and it' s also accepted.
< img alt = "" src = "https://assets.leetcode.com/uploads/2020/09/04/del_node_supp.jpg" style = "width: 350px; height: 255px;" / >
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 2:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< pre >
< strong > Input:< / strong > root = [5,3,6,2,4,null,7], key = 0
< strong > Output:< / strong > [5,3,6,2,4,null,7]
< strong > Explanation:< / strong > The tree does not contain a node with value = 0.
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 3:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< pre >
< strong > Input:< / strong > root = [], key = 0
< strong > Output:< / strong > []
< / pre >
< p > < / p >
< p > < strong > Constraints:< / strong > < / p >
< ul >
< li > The number of nodes in the tree is in the range < code > [0, 10< sup > 4< / sup > ]< / code > .< / li >
< li > < code > -10< sup > 5< / sup > < = Node.val < = 10< sup > 5< / sup > < / code > < / li >
< li > Each node has a < strong > unique< / strong > value.< / li >
< li > < code > root< / code > is a valid binary search tree.< / li >
< li > < code > -10< sup > 5< / sup > < = key < = 10< sup > 5< / sup > < / code > < / li >
< / ul >
< p > < / p >
< p > < strong > Follow up:< / strong > Could you solve it with time complexity < code > O(height of tree)< / code > ?< / p >