티스토리 뷰

 Binary Search Tree의 root node와 Target value가 주어지고, Tree의 모든 node를 탐색해 Target value의 가장 근사한 value를 가진 node를 return하면 된다. DFS를 통해 left child와 right child가 존재하면 계속 탐색해 나가는 방식으로 구현했다.

 

class Solution:
    def closestValue(self, root: Optional[TreeNode], target: float) -> int:
        def dfs(node, target):
            l = r = math.inf
            if node.left != None:
                l = abs(node.left.val - target)
            if node.right != None:
                r = abs(node.right.val - target)
            if self.diff > l:
                self.diff = l
                self.ret = node.left.val
            if self.diff > r:
                self.diff = r
                self.ret = node.right.val
            if node.left != None:
                dfs(node.left, target)
            if node.right != None:
                dfs(node.right, target)
        
        self.ret = root.val
        self.diff = abs(root.val - target)
        dfs(root, target)

        return self.ret
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
반응형