Skip to content

Commit 7c4b753

Browse files
authored
Merge pull request #182 from dsrao711/issue_180
Python solution for deleting a node in BST - DSA 450
2 parents 6083e76 + 52c391f commit 7c4b753

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

DSA 450 GFG/DeleteNodeinBST.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#https://leetcode.com/problems/delete-node-in-a-bst/submissions/
2+
3+
# Definition for a binary tree node.
4+
# class TreeNode:
5+
# def __init__(self, val=0, left=None, right=None):
6+
# self.val = val
7+
# self.left = left
8+
# self.right = right
9+
class Solution:
10+
11+
def findMinimum(self , root):
12+
current = root
13+
while(current.left):
14+
current = current.left
15+
return current
16+
17+
def deleteNode(self, root: TreeNode, key: int) -> TreeNode:
18+
19+
if not root:
20+
return root
21+
22+
23+
elif(key < root.val):
24+
root.left = self.deleteNode(root.left , key)
25+
26+
elif(key > root.val):
27+
root.right = self.deleteNode(root.right , key)
28+
29+
else:
30+
31+
#Leaf
32+
if not root.left and not root.right:
33+
root = None
34+
35+
#1 child
36+
elif not root.left:
37+
root = root.right
38+
39+
elif not root.right :
40+
root = root.left
41+
42+
#2 child
43+
else:
44+
temp = self.findMinimum(root.right)
45+
root.val = temp.val
46+
root.right = self.deleteNode(root.right , temp.val)
47+
48+
return root
49+
50+

0 commit comments

Comments
 (0)