From df759315e2aaadce9c484df6f88741ef30a82633 Mon Sep 17 00:00:00 2001 From: pro100ton Date: Sun, 23 Feb 2025 21:52:34 +0300 Subject: [PATCH] Add solution for BTS: remove element --- .../delete_from_binary_tree/solution.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/neetcode/binary_trees/delete_from_binary_tree/solution.py b/neetcode/binary_trees/delete_from_binary_tree/solution.py index e69de29..683a923 100644 --- a/neetcode/binary_trees/delete_from_binary_tree/solution.py +++ b/neetcode/binary_trees/delete_from_binary_tree/solution.py @@ -0,0 +1,34 @@ +from typing import Optional + + +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right + + +class Solution: + def find_min(self, root) -> TreeNode: + cur = root + while cur and cur.left: + cur = cur.left + return cur + + def deleteNode(self, root: Optional[TreeNode], key: int) -> Optional[TreeNode]: + if not root: + return None + if key < root.val: + root.left = self.deleteNode(root.left, key) + elif key > root.val: + root.right = self.deleteNode(root.right, key) + else: + if not root.right: + return root.left + elif not root.left: + return root.right + else: + min_node = self.find_min(root.right) + root.val = min_node.val + root.right = self.deleteNode(root.right, min_node.val) + return root