111. Minimum Depth of Binary Tree

Given a binary tree, find its minimum depth.

The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

Note: A leaf is a node with no children.

Example 1:

```Input: root = [3,9,20,null,null,15,7]
Output: 2
```

Example 2:

```Input: root = [2,null,3,null,4,null,5,null,6]
Output: 5
```

Constraints:

• The number of nodes in the tree is in the range `[0, 105]`.
• `-1000 <= Node.val <= 1000`

111. Minimum Depth of Binary Tree
``````struct Solution;
use rustgym_util::*;

trait MinDepth {
fn min_depth(&self) -> usize;
}

fn min_depth(&self) -> usize {
match self {
None => 0,
Some(node) => {
let node = node.borrow();
match (&node.left, &node.right) {
(None, None) => 1,
(Some(_), None) => TreeLink::min_depth(&node.left) + 1,
(None, Some(_)) => TreeLink::min_depth(&node.right) + 1,
(Some(_), Some(_)) => {
usize::min(
) + 1
}
}
}
}
}
}

impl Solution {
fn min_depth(root: TreeLink) -> i32 {
root.min_depth() as i32
}
}

#[test]
fn test() {
let root = tree!(3, tree!(9), tree!(20, tree!(15), tree!(7)));
assert_eq!(Solution::min_depth(root), 2);
}
``````