Description
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, 10^5]. -1000 <= Node.val <= 1000
Train of thought
- basic case 1: Root node is null, return 0
- basic case 2: Both child nodes of the root node are null, return 1
- recursive relationship:
- The minimum depth of binary tree = 1 + the minimum depth of the child nodes of root
Solution
public int minDepth(TreeNode root) {
// base case 1
if (root == null) {
return 0;
}
// base case 2
if (root.left == null && root.right == null) {
return 1;
}
// recursive relationship
if (root.left == null) {
return 1 + minDepth(root.right);
}
if (root.right == null) {
return 1 + minDepth(root.left);
}
return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
}