job 인터뷰/코테(Matroid) 준비

BST: 701. Insert into a Binary Search Tree

hyunkookim 2025. 1. 15. 14:42

BST 값 추가

 

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def insertIntoBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
        
        def insert(node, val):
            if not node: # 노드 없으면,
                return TreeNode(val) # 노드 만들어서 리턴

            if val < node.val: # 넣는 값이, 현재 노드값보다 작으면 왼쪽에 삽입
                node.left = insert(node.left, val) 
            elif val > node.val: # 넣는 값이, 현재 노드값보다 크면 오른쪽에 삽입
                node.right = insert(node.right, val) 
            """
            # else: # 현재값과 같으면 <-- 이런 경우 없음, 
            # It is guaranteed that the new value does not exist in the original BST.
            # 기존 값과 같은 같을 추가하지는 않는다고 함
			"""
            return node

        return insert(root, val)

 

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def insertIntoBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
        def insert(node, val):
            if not node: # 노드가 빈노드, None 이면, 여기에 추가
                node = TreeNode(val)
                return node
                # return TreeNode(val)
                
            if node.val < val: # 추가하려는 값이, 현재 노드 값 보다 크면, 오른쪽으로 가서 추가해야 함
                node.right = insert(node.right, val) # 추가하고 업데이트 꼭 해야 함!!
            elif node.val > val: # 추가하려는 값이, 현재 노드 값 보다 크면, 왼쪽으로 가야 추가 해야 함
                node.left = insert(node.left, val)  # 추가하고 업데이트 꼭 해야 함!!
            
            # 여기는 node.val == val 인 상황.. 이런 상황 없음.. 왜냐. 추가할거니깐
            # 만약, 추가할 값이랑 현재 값이랑 같으면. 아무짓도 안함

            return node

        return insert(root, val)