거누의 개발노트

[파이썬] 700. Search in a Binary Search Tree - 리트코드 본문

코딩테스트

[파이썬] 700. Search in a Binary Search Tree - 리트코드

Gogozzi 2022. 5. 24. 23:07
반응형

문제

BST에서 노드의 값이 val과 같은 노드를 찾고 해당 노드의 하위 트리를 반환하는 코드를 작성. 그러한 노드가 존재하지 않으면 null을 반환 합니다.

입력

Input: root = [4,2,7,1,3], val = 2

출력

Output: [2,1,3]

작성한 코드1

# 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 searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
    	# root가 비어있다면 None
        if not root:
            return None
        # root가 비어있지 않다면
        else:
        	# root의 값이 기준값과 같으면
            if root.val == val:
            	# 해당 노드를 반환함으로써, 하위노드까지 반환
                return root
            elif root.val > val:
            	#root의 값이 기준값보다 작은 값을 찾아야하므로 왼쪽으로 재귀호출해서 반환
                return self.searchBST(root.left, val)
            elif root.val < val:
            	#root의 값이 기준값보다 큰 값을 찾아야하므로 오른쪽에서 재귀호출에서 반환
                return self.searchBST(root.right, val)

작성한 코드2

# 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 searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
    	#root가 존재하고, root.val가 val랑 다를 동안
        while (root and root.val != val):
            # root.val가 val보다 크면 작은 값을 찾아야하기에
            if root.val > val:
                # root에다가 root.left 값을 넣는다.
                root = root.left
            else:
                # 아니면 root.right 값을 넣는다.
                root = root.right
        #최종적으로 root를 반환해 주면, 하위 노드까지 반환!
        return root

https://leetcode.com/problems/search-in-a-binary-search-tree/

 

Search in a Binary Search Tree - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

반응형
Comments