/* * @lc app=leetcode id=938 lang=rust * * [938] Range Sum of BST * * https://leetcode.com/problems/range-sum-of-bst/description/ * * algorithms * Easy (79.26%) * Total Accepted: 152K * Total Submissions: 191.8K * Testcase Example: '[10,5,15,3,7,null,18]\n7\n15' * * 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. * * * */ // Definition for a binary tree node. // #[derive(Debug, PartialEq, Eq)] // // pub structTreeNode { // pub val: i32, // pub left: Option>>, // pub right: Option>>, // } // impl TreeNode { // #[inline] // pub fn new(val: i32) -> Self { // TreeNode { // val, // left: None, // right: None // } // } // } use std::rc::Rc; use std::cell::RefCell; impl Solution { pub fn range_sum_bst(root: Option>>, l: i32, r: i32) -> i32 { if let Some(root) = root { let mut _sum = 0; if l <= root.borrow().val && r >= root.borrow().val { _sum += root.borrow().val ;} if l < root.borrow().val { _sum += Self::range_sum_bst(root.borrow().left.clone(), l, r); } if r > root.borrow().val { _sum += Self::range_sum_bst(root.borrow().right.clone(), l, r); } return _sum ; } 0 } } // pub structSolution;