카테고리 없음
NeetCode 18번 알고리즘 : BST Insert and Remove
코테챌린져
2024. 7. 7. 17:47
Insertion

# Insert a new node and return the root of the BST.
def insert(root, val):
if not root:
return TreeNode(val)
if val > root.val:
root.right = insert(root.right, val)
elif val < root.val:
root.left = insert(root.left, val)
return root
Removal
0 or 1 Child

2 Children

# Return the minimum value node of the BST.
def minValueNode(root):
curr = root
while curr and curr.left:
curr = curr.left
return curr
# Remove a node and return the root of the BST.
def remove(root, val):
if not root:
return None
if val > root.val:
root.right = remove(root.right, val)
elif val < root.val:
root.left = remove(root.left, val)
else:
if not root.left:
return root.right
elif not root.right:
return root.left
else:
minNode = minValueNode(root.right)
root.val = minNode.val
root.right = remove(root.right, minNode.val)
return root
Time Complexity
For both insertion and removal,
Average : O(logn)
Worst Case: O(n)