zoukankan      html  css  js  c++  java
  • 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 }
     
  • 相关阅读:
    9 jmeter之检查点
    8 jmeter之集合点
    7 jmeter之参数化
    6 jmeter元件的作用域与执行顺序
    5 jmeter性能测试小小的实战
    4 jmeter badboy脚本开发技术详解
    3 jmeter的两种录制方法
    2 jmeter常用功能介绍-测试计划、线程组
    Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project
    常见异常总结
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7732142.html
Copyright © 2011-2022 走看看