티스토리 뷰
SMALL
- DFS(깊이 우선 탐색) 사용
public class Solution {
public int rangeSumBST(TreeNode root, int low, int high) {
if (root == null) {
return 0;
}
int currentVal = (root.val >= low && root.val <= high) ? root.val : 0;
int leftSum = rangeSumBST(root.left, low, high);
int rightSum = rangeSumBST(root.right, low, high);
return currentVal + leftSum + rightSum;
}
}
DFS(깊이 우선 탐색)을 사용해서 재귀적 방법을 사용하였다.
DFS는 트리의 끝까지 탐색한다.
결국 전체를 찾아보게된다. O(n)이다.
Q. 전체 트리를 찾아볼 필요가 없다. 알다시피 트리의 왼쪽은 자신보다 작은 수, 오른쪽은 자신보다 큰 수가 온다.
그러므로 현재 위치한 root.val이 low보다 작으면 오른쪽 트리만 확인하면 되고, rootval이 high보다 높으면 왼쪽 트리만 확인하면 된다. 그리고 root.val이 low와 high 사이의 수라면 구해야 하는 수에 합하고 왼쪽, 오른쪽 트리 모두 구해야 한다.
- Backtracking 알고리즘 사용
public class Solution {
public int rangeSumBST(TreeNode root, int low, int high) {
if (root == null) return 0;
if(root.val < low){
return rangeSumBST(root.right, low, high);
} else if(root.val > high){
return rangeSumBST(root.left, low, high);
} else {
return root.val + rangeSumBST(root.left, low, high) + rangeSumBST(root.right, low, high);
}
}
}
Backtracking 알고리즘을 사용했다. 이것도 O(n)이다.
반응형
LIST
'백준&LeetCode' 카테고리의 다른 글
[LeetCode] 13. Roman to Integer (Day2) (0) | 2024.01.09 |
---|---|
[LeetCode] 872. Leaf-Similar Trees (Day2) (0) | 2024.01.09 |
[c언어] 백준 2525번 : 오븐 시계 (0) | 2023.02.09 |
[c언어] 백준 9012번 : 괄호 (0) | 2023.02.04 |
[c언어] 백준 10828번 : 스택 자료구조 (0) | 2023.02.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 문제풀이
- database연결
- Turtle Graphic
- Kkma
- 터틀그래픽예제
- 터틀그래픽
- 사람검출
- JAVA오류해결
- 터틀그래픽 명령어
- streamlistener
- 사람수세기
- springboot
- SPRING오류해결
- gradleload오류
- konlpy
- tweepy
- 오븐시계
- 다인승탑승
- UnsupportedClassVersionError
- 다인승
- YOLO
- baekjoon
- 에러발생
- 10828번
- randrange
- python공부
- 백준
- 파이썬
- yolov8
- randint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함