diff options
Diffstat (limited to 'range_sum_bst.rs')
-rw-r--r-- | range_sum_bst.rs | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/range_sum_bst.rs b/range_sum_bst.rs deleted file mode 100644 index f793202..0000000 --- a/range_sum_bst.rs +++ /dev/null @@ -1,38 +0,0 @@ -#[derive(Debug, PartialEq, Eq)] -pub struct TreeNode { - pub val: i32, - pub left: Option<Rc<RefCell<TreeNode>>>, - pub right: Option<Rc<RefCell<TreeNode>>> -} - -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<Rc<RefCell<TreeNode>>>, low: i32, high: i32) -> i32 { - if let Some(root) = root { - let mut sum = 0; - if low <= root.borrow().val && root.borrow().val <= high { - sum += root.borrow().val; - } - if low < root.borrow().val { - sum += Self::range_sum_bst(root.borrow().left.clone(), low, high); - } - if high > root.borrow().val { - sum += Self::range_sum_bst(root.borrow().right.clone(), low, high); - } - return sum; - } - 0 - } -} |