Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 71e4dec

Browse files
author
guangsheng.li01
committed
Solved 1302
1 parent e8340e8 commit 71e4dec

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

src/a1302_deepest_leaves_sum.rs

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
* [1302] deepest-leaves-sum
3+
*/
4+
5+
use super::utils::tree::*;
6+
pub struct Solution;
7+
8+
// solution impl starts here
9+
10+
// Definition for a binary tree node.
11+
// #[derive(Debug, PartialEq, Eq)]
12+
// pub struct TreeNode {
13+
// pub val: i32,
14+
// pub left: Option<Rc<RefCell<TreeNode>>>,
15+
// pub right: Option<Rc<RefCell<TreeNode>>>,
16+
// }
17+
//
18+
// impl TreeNode {
19+
// #[inline]
20+
// pub fn new(val: i32) -> Self {
21+
// TreeNode {
22+
// val,
23+
// left: None,
24+
// right: None
25+
// }
26+
// }
27+
// }
28+
use std::cell::RefCell;
29+
use std::rc::Rc;
30+
31+
struct _Solution {
32+
max_dep: i32,
33+
sum: i32,
34+
}
35+
36+
impl _Solution {
37+
fn dfs(&mut self, node: Option<&Rc<RefCell<TreeNode>>>, dep: i32) {
38+
if let Some(node) = node {
39+
let node = node.borrow();
40+
if dep > self.max_dep {
41+
self.max_dep = dep;
42+
self.sum = node.val;
43+
} else if dep == self.max_dep {
44+
self.sum += node.val;
45+
}
46+
self.dfs(node.left.as_ref(), dep + 1);
47+
self.dfs(node.right.as_ref(), dep + 1);
48+
}
49+
}
50+
}
51+
52+
impl Solution {
53+
pub fn deepest_leaves_sum(root: Option<Rc<RefCell<TreeNode>>>) -> i32 {
54+
let mut s = _Solution { max_dep: 0, sum: 0 };
55+
s.dfs(root.as_ref(), 0);
56+
s.sum
57+
}
58+
}
59+
// solution impl ends here
60+
61+
// solution tests starts here
62+
63+
#[cfg(test)]
64+
mod tests {
65+
use super::*;
66+
67+
#[test]
68+
fn test_case0() {
69+
assert_eq!(
70+
Solution::deepest_leaves_sum(tree![
71+
1, 2, 3, 4, 5, null, 6, 7, null, null, null, null, 8
72+
]),
73+
15
74+
);
75+
}
76+
}
77+
78+
// solution tests ends here

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,5 @@ mod a1021_remove_outermost_parentheses;
4545
mod a1047_remove_all_adjacent_duplicates_in_string;
4646
mod a1200_minimum_absolute_difference;
4747
mod a1287_element_appearing_more_than_25_in_sorted_array;
48+
mod a1302_deepest_leaves_sum;
4849
mod a1317_convert_integer_to_the_sum_of_two_no_zero_integers;

0 commit comments

Comments
 (0)