LeetCode/rs/maximum-depth-of-binary-tree.rs

39 lines
850 B
Rust
Raw Normal View History

// 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::rc::Rc;
use std::cmp;
use std::cell::RefCell;
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)
}
}