We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
2 parents f4826dd + 87320d3 commit d691b58Copy full SHA for d691b58
rust/0543-diameter-of-binary-tree.rs
@@ -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