1302. Deepest Leaves Sum

Given the `root` of a binary tree, return the sum of values of its deepest leaves.

Example 1:

```Input: root = [1,2,3,4,5,null,6,7,null,null,null,null,8]
Output: 15
```

Example 2:

```Input: root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]
Output: 19
```

Constraints:

• The number of nodes in the tree is in the range `[1, 104]`.
• `1 <= Node.val <= 100`

1302. Deepest Leaves Sum
``````struct Solution;
use rustgym_util::*;

trait Preorder {
fn dfs(&self, level: usize, max: &mut usize, sum: &mut i32);
}

fn dfs(&self, level: usize, max: &mut usize, sum: &mut i32) {
use std::cmp::Ordering::*;
if let Some(node) = self {
let val = node.borrow().val;
let left = &node.borrow().left;
let right = &node.borrow().right;
match level.cmp(max) {
Greater => {
*max = level;
*sum = val;
}
Equal => {
*sum += val;
}
_ => {}
}
left.dfs(level + 1, max, sum);
right.dfs(level + 1, max, sum);
}
}
}

impl Solution {
fn deepest_leaves_sum(root: TreeLink) -> i32 {
let mut res = 0;
let mut max = 0;
root.dfs(0, &mut max, &mut res);
res
}
}

#[test]
fn test() {
let root = tree!(
1,
tree!(2, tree!(4, tree!(7), None), tree!(5)),
tree!(3, None, tree!(6, None, tree!(8)))
);
let res = 15;
assert_eq!(Solution::deepest_leaves_sum(root), res);
}
``````