rs: add “104. Maximum Depth of Binary Tree”

Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
Matej Focko 2024-01-11 23:40:59 +01:00
parent be4de17b4d
commit 0c96d36b10
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -0,0 +1,38 @@
// 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)
}
}