Skip to content

Commit eb2a5bf

Browse files
authored
Create 450. Delete Node in a BST.py
1 parent 070edcd commit eb2a5bf

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
#
8+
9+
'''
10+
1. 아이디어 :
11+
- key까지 찾아갑니다.
12+
- 자식이 없을때: par 연결 끊기
13+
- 자식이 1개 있을때: par을 자식과 연결
14+
- 자식이 2개 있을때: par을 왼쪽 자식과 연결 + 오른쪽 자식을 왼쪽 자식의 가장 오른쪽에 연결
15+
16+
2. 시간복잡도 :
17+
O(n)
18+
19+
3. 자료구조/알고리즘 :
20+
dfs
21+
22+
'''
23+
class Solution:
24+
def deleteNode(self, node: Optional[TreeNode], key: int) -> Optional[TreeNode]:
25+
if not node:
26+
return None
27+
28+
if node.val > key:
29+
node.left = self.deleteNode(node.left, key)
30+
return node
31+
if node.val < key:
32+
node.right = self.deleteNode(node.right, key)
33+
return node
34+
35+
if not node.left:
36+
return node.right
37+
if not node.right:
38+
return node.left
39+
40+
next_node = node.left
41+
while next_node.right:
42+
next_node = next_node.right
43+
44+
next_node.right = node.right
45+
46+
return node.left
47+
48+

0 commit comments

Comments
 (0)