Advertisement
vitalii24

Delete node in BST

Feb 21st, 2025
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.16 KB | Software | 0 0
  1. // https://leetcode.com/problems/delete-node-in-a-bst/
  2. /**
  3.  * Definition for a binary tree node.
  4.  * public class TreeNode {
  5.  *     public int val;
  6.  *     public TreeNode left;
  7.  *     public TreeNode right;
  8.  *     public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {
  9.  *         this.val = val;
  10.  *         this.left = left;
  11.  *         this.right = right;
  12.  *     }
  13.  * }
  14.  */
  15. public class Solution {
  16.     public TreeNode DeleteNode(TreeNode root, int key)
  17.     {
  18.         root = SearchNode(root, key);
  19.         return root;
  20.     }
  21.  
  22.     TreeNode SearchNode(TreeNode node, int key)
  23.     {
  24.         if (node == null)
  25.         {
  26.             return null;
  27.         }
  28.  
  29.         if (node.val == key)
  30.         {
  31.             if (node.left != null)
  32.             {
  33.                 var maxLeft = GetMaxLeftNode(node.left);
  34.                 node.left = DeleteNode(node.left, maxLeft.val);
  35.                 maxLeft.left = node.left;
  36.                 maxLeft.right = node.right;
  37.                 return maxLeft;
  38.             }
  39.  
  40.             if (node.right != null)
  41.             {
  42.                 var minRight = GetMinRightNode(node.right);
  43.                 node.right = DeleteNode(node.right, minRight.val);
  44.                 minRight.left = node.left;
  45.                 minRight.right = node.right;
  46.                 return minRight;
  47.             }
  48.  
  49.             //delete leaf node;
  50.             return null;
  51.         }
  52.  
  53.         if (key < node.val)
  54.         {
  55.             node.left = SearchNode(node.left, key);
  56.         }
  57.         else
  58.         {
  59.             node.right = SearchNode(node.right, key);
  60.         }
  61.  
  62.         return node;
  63.     }
  64.  
  65.     TreeNode GetMaxLeftNode(TreeNode node)
  66.     {
  67.         if (node == null)
  68.         {
  69.             return null;
  70.         }
  71.  
  72.         TreeNode it = node;
  73.         while(it.right != null)
  74.         {
  75.             it = it.right;
  76.         }
  77.  
  78.         return it;
  79.     }
  80.  
  81.     TreeNode GetMinRightNode(TreeNode node)
  82.     {
  83.         if (node == null)
  84.         {
  85.             return null;
  86.         }
  87.  
  88.         TreeNode it = node;
  89.         while(it.left != null)
  90.         {
  91.             it = it.left;
  92.         }
  93.  
  94.         return it;
  95.     }
  96. }
Tags: algorithms
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement