// Definition for a binary tree node. // #[derive(Debug, PartialEq, Eq)] // pub struct TreeNode { // pub val: i32, // pub left: Option>>, // pub right: Option>>, // } // // 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>>, 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>>) -> i32 { _max_depth(root, 0) } }