package com.fishercoder.solutions;

import com.fishercoder.common.classes.TreeNode;
import java.util.ArrayList;
import java.util.List;

/**
 * 938. Range Sum of BST
 *
 * Given the root node of a binary search tree, return the sum of values of all nodes with value between L and R (inclusive).
 *
 * The binary search tree is guaranteed to have unique values.
 *
 * Example 1:
 * Input: root = [10,5,15,3,7,null,18], L = 7, R = 15
 * Output: 32
 *
 * Example 2:
 * Input: root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10
 * Output: 23
 *
 * Note:
 * The number of nodes in the tree is at most 10000.
 * The final answer is guaranteed to be less than 2^31.
 */
public class _938 {
  public static class Solution1 {
    public int rangeSumBST(TreeNode root, int L, int R) {
      if (root == null) {
        return 0;
      }
      List<Integer> list = new ArrayList<>();
      dfs(root, L, R, list);
      return list.stream().mapToInt(num -> num).sum();
    }

    private void dfs(TreeNode root, int l, int r, List<Integer> list) {
      if (root == null) {
        return;
      }
      if (root.val <= r && root.val >= l) {
        list.add(root.val);
      }
      dfs(root.left, l, r, list);
      dfs(root.right, l, r, list);
    }
  }
}

@@ -77,16 +77,17 @@
 eeNode;%0A
+%0A
 import j
@@ -134,534 +134,8 @@
 t;%0A%0A
-/**%0A * 938. Range Sum of BST%0A *%0A * Given the root node of a binary search tree, return the sum of values of all nodes with value between L and R (inclusive).%0A *%0A * The binary search tree is guaranteed to have unique values.%0A *%0A * Example 1:%0A * Input: root = %5B10,5,15,3,7,null,18%5D, L = 7, R = 15%0A * Output: 32%0A *%0A * Example 2:%0A * Input: root = %5B10,5,15,3,7,13,18,1,null,6%5D, L = 6, R = 10%0A * Output: 23%0A *%0A * Note:%0A * The number of nodes in the tree is at most 10000.%0A * The final answer is guaranteed to be less than 2%5E31.%0A */%0A
 publ
@@ -152,16 +152,18 @@
 938 %7B%0A  
+ 
+ 
 public s
@@ -186,16 +186,20 @@
 tion1 %7B%0A
+    
     publ
@@ -246,32 +246,38 @@
  int R) %7B%0A      
+     
+ 
 if (root == null
@@ -272,32 +272,40 @@
 root == null) %7B%0A
+        
         return 0
@@ -312,24 +312,36 @@
 ;%0A      
+ 
-%7D%0A
+     %7D%0A     
       
+ 
 List%3CInt
@@ -368,24 +368,30 @@
 ayList%3C%3E();%0A
+      
       dfs(ro
@@ -409,24 +409,30 @@
 ist);%0A      
+   
+   
 return list.
@@ -476,15 +476,23 @@
     
-%7D%0A%0A
+    %7D%0A%0A   
     
+ 
 priv
@@ -551,24 +551,30 @@
 er%3E list) %7B%0A
+      
       if (ro
@@ -579,32 +579,40 @@
 root == null) %7B%0A
+        
         return;%0A
@@ -613,26 +613,38 @@
 turn;%0A      
+     
+ 
 %7D%0A
+      
       if (ro
@@ -671,24 +671,32 @@
 val %3E= l) %7B%0A
+        
         list
@@ -713,26 +713,38 @@
 val);%0A      
+     
+ 
 %7D%0A
+      
       dfs(ro
@@ -767,24 +767,30 @@
 ist);%0A      
+   
+   
 dfs(root.rig
@@ -810,16 +810,22 @@
 t);%0A    
-%7D%0A
+    %7D%0A  
   %7D%0A%7D%0A

refactor 938