문제
숫자가 담긴 바이너리서치트리와 타겟번호가 주어졌을때 더했을때 합이 타겟과 일치하는지 boolean으로 리턴시켜라
https://leetcode.com/problems/two-sum-iv-input-is-a-bst/
예제 bst는 링크참조
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
|
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean findTarget(TreeNode root, int k) {
HashSet<Integer> hashs = new HashSet<Integer>();
return dfs(root,hashs,k);
}
public boolean dfs (TreeNode root,HashSet<Integer> hash, int k) {
if (root == null) {
return false;
}
return true;
}
hash.add(root.val);
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
시간복잡도 O(log n)
1.노드를 좌측부터 검색해나가면서 hashset에 등록시킨다.
2.재귀로 계속 검색
3.왼쪽 노드가 더이상없을경우 28번줄 return left에서 return이 false가 되며
오른쪽노드를 검색함 -> 28번줄 right로 이동함.
4.오른쪽도 없을시 false를 리턴하며 이전재귀로 이동하여 left는 false가 되고 다시 오른쪽 노드를 검색함
5.있으면 또 재귀돌면서 왼쪽오른쪽 다 검색한다.
6.이렇게 검색하면서 중간에 hashset에 타겟번호에 현재노드값을 뺀 값이 있는지 확인
7. 있으면 true return이 다 true가 되면서 종료.
8. node a + node b = target t 이므로 target t - node b = node a
'개발 > algorithm' 카테고리의 다른 글
leetcode 3번문제 Longest Substring Without Repeating Characters (0) | 2020.04.14 |
---|---|
leetcode 445번문제 add two numbers 2 (0) | 2020.04.14 |
leetcode 2번문제 add two numbers (0) | 2020.04.14 |
leetcode 167번문제 Two Sum 2 - input array is sorted (0) | 2020.04.14 |
leetcode 1번문제 Two Sum (0) | 2020.04.14 |