38 lines
850 B
Rust
38 lines
850 B
Rust
// Definition for a binary tree node.
|
|
// #[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::cell::RefCell;
|
|
use std::cmp;
|
|
use std::rc::Rc;
|
|
|
|
fn _max_depth(root: Option<Rc<RefCell<TreeNode>>>, depth: i32) -> i32 {
|
|
match root {
|
|
None => depth,
|
|
Some(node) => cmp::max(
|
|
_max_depth(node.borrow().left.clone(), depth + 1),
|
|
_max_depth(node.borrow().right.clone(), depth + 1),
|
|
),
|
|
}
|
|
}
|
|
|
|
impl Solution {
|
|
pub fn max_depth(root: Option<Rc<RefCell<TreeNode>>>) -> i32 {
|
|
_max_depth(root, 0)
|
|
}
|
|
}
|