티스토리 뷰
반응형
문제
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 |
반응형