티스토리 뷰

반응형

문제

https://leetcode.com/problems/two-sum-iv-input-is-a-bst/description/

 

LeetCode - The World's Leading Online Programming Learning Platform

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

풀이 코드

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {

    /**
     * 중복을 제거해주는 HashSet을 사용합니다.
     * Tree를 순회하면서 node.val을 HashSet에 담습니다.
     * k와 현재 탐색 중인 node.val의 차가 HashSet에 이미 담겨있다면,
     * 두 node의 합이 k가 되는 것이므로 true를 return합니다.
     */
    public boolean findTarget(TreeNode root, int k) {
        HashSet<Integer> set = new HashSet<>();
        return DFS(root, k, set);
    }

    private static boolean DFS(TreeNode node, int k, HashSet<Integer> set) {
        if (node == null) {
            return false;
        } else {
            if (set.contains(k - node.val)) {
                return true;
            } else {
                set.add(node.val);
            }

            // node.left를 순회하면서
            // 두 node의 합이 한번이라도 k가 된다면, left가 true가 되고 다음 행이 실행 됩니다.
            boolean left = DFS(node.left, k, set);
            // node.right를 순회하면서
            // 두 node의 합이 한번이라도 k가 된다면, right가 true가 되고 다음 행이 실행 됩니다.
            boolean right = DFS(node.right, k, set);
            
            // node를 순회하면서 한번이라도 true가 됐다면 true를 return.
            return left || right;
        }
    }
}
반응형

'코딩테스트 > LeetCode' 카테고리의 다른 글

Create Binary Tree From Descriptions  (0) 2023.10.11
Symmetric Tree  (0) 2023.10.10
Count Good Nodes in Binary Tree  (0) 2023.10.06
Find Elements in a Contaminated Binary Tree  (0) 2023.10.05
Reverse Odd Levels of Binary Tree  (0) 2023.10.04
반응형