Skip to content

Commit 87320d3

Browse files
committed
create 0543-diameter-of-binary-tree.rs
1 parent 39611ac commit 87320d3

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

rust/0543-diameter-of-binary-tree.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use std::rc::Rc;
2+
use std::cell::RefCell;
3+
impl Solution {
4+
pub fn diameter_of_binary_tree(root: Option<Rc<RefCell<TreeNode>>>) -> i32 {
5+
fn dfs(root: Option<Rc<RefCell<TreeNode>>>) -> (i32, i32) {
6+
match root {
7+
None => (0, 0),
8+
Some(node) => {
9+
let (l_diameter, l_max) = dfs(node.borrow().left.clone());
10+
let (r_diameter, r_max) = dfs(node.borrow().right.clone());
11+
(
12+
1 + l_diameter.max(r_diameter),
13+
l_max.max(r_max.max(l_diameter + r_diameter)),
14+
)
15+
}
16+
}
17+
}
18+
19+
dfs(root).1
20+
}
21+
}

0 commit comments

Comments
 (0)