Range Sum of BST
이진 탐색 트리의 루트 트리 : root
low, high : 정수형 변수
리턴 값 : [low, high] range의 모든 노드가 갖고 있는 값의 합
트리의 범위 : 1부터 (2 * 10^4) 까지
노드가 갖고 있는 값 : 1 부터 10^5 까지
1 <= low <= high <= 10^5
입출력 예시
Input : root = [10, 5, 15, 3, 7, null, 18], low = 7, high = 15
Output : 32
Explanation : low부터 high 사이의 값들의 합 = 7 + 10 + 15 = 32
Input : root = [10, 5, 15, 3, 7, 13, 18, 1, null, 6], low = 6, high = 10
Output : 23
Explanation : low부터 high 사이의 값들의 합 = 6 + 7 + 10 = 23
/**
* 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 {
int sum = 0;
public int rangeSumBST(TreeNode root, int low, int high) {
// 노드의 값이 null인 것은 제외하기 위해 0 return
if (root == null) {
return 0;
}
// Base Case : 특정 node의 값이 low와 high 사이에 있으면 sum에 더함
if (root.val >= low && root.val <= high) {
sum += root.val;
}
// 재귀 조건 : 특정 노드의 자식들도 Base Case 만족하는지 확인
if (root.val > low) {
rangeSumBST(root.left, low, high);
}
if (root.val < high) {
rangeSumBST(root.right, low, high);
}
return sum;
}
}
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL