• 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 }
     
  • 相关阅读:
    mybatis的知识点总结
    orm框架与缓存的关系
    mybatis知识点
    mybatis
    MyBatis的动态SQL详解
    工资谈判技巧
    MySQL 创建函数(Function)
    开始AFNetworking
    hdu 4778 Rabbit Kingdom(减少国家)
    设计模式:代理模式
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7732142.html
Copyright © 2020-2023  润新知