• 450. Delete Node in a BST


    Given a root node reference of a BST and a key, delete the node with the given key in the BST. Return the root node reference (possibly updated) of the BST.

    Basically, the deletion can be divided into two stages:

    1. Search for a node to remove.
    2. If the node is found, delete the node.

    Note: Time complexity should be O(height of tree).

    Example:

    root = [5,3,6,2,4,null,7]
    key = 3
    
        5
       / 
      3   6
     /    
    2   4   7
    
    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 following BST.
    
        5
       / 
      4   6
     /     
    2       7
    
    Another valid answer is [5,2,6,null,4,null,7].
    
        5
       / 
      2   6
          
        4   7
    

     含义:现在有一个二叉搜索树,现在要让你删除一个节点,并且保证整个BST的性质不变

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 class Solution {
    11         
    12 public TreeNode deleteNode(TreeNode root, int key) {
    13     if(root == null){
    14         return null;
    15     }
    16     if(key < root.val){
    17         root.left = deleteNode(root.left, key);
    18     }else if(key > root.val){
    19         root.right = deleteNode(root.right, key);
    20     }else{
    21         if(root.left == null){
    22             return root.right;
    23         }else if(root.right == null){
    24             return root.left;
    25         }
    26         
    27         TreeNode minNode = findMin(root.right);
    28         root.val = minNode.val;
    29         root.right = deleteNode(root.right, root.val);
    30     }
    31     return root;
    32 }
    33 
    34 private TreeNode findMin(TreeNode node){
    35     while(node.left != null){
    36         node = node.left;
    37     }
    38     return node;
    39 }
    40 }
     
  • 相关阅读:
    XFrameOption
    304缓存的原理
    跨域以及实现跨域的方法
    Pytorch中RNN参数解释
    Pytorch实现LeNet
    Pytorch自定义数据集
    Pytorch模型保存和加载
    Pytorch如何约束和限制权重/偏执的范围
    单调神经网络《 Monotonic Networks》及代码实现
    k8s pod报错Process failed to launch spawn E2BIG
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7732142.html
Copyright © 2020-2023  润新知