티스토리 뷰

 inorder를 통해 BST를 traverse하면서 list에 오름차순으로 값을 넣고, 첫번째 list는 작은 숫자부터, 두번째 list는 큰 숫자부터 더하는 Two Pointer 방식으로 target을 찾았고 없으면 False를 반환한다.

class Solution:
    def twoSumBSTs(self, root1: Optional[TreeNode], root2: Optional[TreeNode], target: int) -> bool:
        def inorder(n):
            if n == None:
                return []
            left = []
            right = []
            if n.left != None:
                left = inorder(n.left)
            if n.right != None:
                right = inorder(n.right)
            return left + [n.val] + right
            
        treeA = inorder(root1)
        treeB = inorder(root2)

        a, b = 0, len(treeB)-1
        while a < len(treeA) and b > -1:
            sum_ = treeA[a] + treeB[b]
            if sum_ == target:
                return True
            elif sum_ < target:
                a += 1
            else:
                b -= 1

        return False

참고:

- https://leetcode.com/problems/two-sum-bsts/description/

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함
반응형