111. 二叉树的最小深度
Tag Tree
DFS
Difficulty Easy
Link https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/
分析
与求二叉树的最大深度类似,只是要注意特例[1, 2]
的深度是2
而不是1
,因为题目要求是根节点到叶节点的最短距离,也就是是如果根节点的左子树为空或右子树为空的时候,最小深度和最大深度是一致的。
题解
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int minDepth(TreeNode root) {
int ans = dfs(root);
return ans;
}
private int dfs(TreeNode root) {
if (root == null) return 0;
else {
int depth_left = dfs(root.left);
int depth_right = dfs(root.right);
// 特例:根节点左右子树有一个为空
if (root.left == null || root.right == null) {
return depth_left + depth_right + 1;
}
else {
return Math.min(depth_left, depth_right) + 1;
}
}
}
}