题目原址
https://leetcode.com/problems/minimum-depth-of-binary-tree/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:
Given binary tree [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
return its minimum depth = 2.
解题思路
给定一个二叉树,返回该二叉树所有路径的最小深度
因为这个是查找最小深度,所以一定要计算二叉树的深度了,只不过这里与平时计算有一点差别就是要找最小的深度,这里只是在普通的查找深度的方法上多加了一个判断操作,如果if(root.left == null || root.right == null)
即当前节点只有单棵左或右树的时候,就正常返回,如果当前节点存在左右子树,则返回左右子树的深度最小的那个值
Math.min(left, right) + 1;
AC代码
class Solution {
public int minDepth(TreeNode root) {
if(root == null)
return 0;
if(root.left == null)
return minDepth(root.right) + 1;
if(root.right == null)
return minDepth(root.left) + 1;
return Math.min(depth(root.left), depth(root.right)) + 1;
}
public int depth(TreeNode root) {
if(root == null)
return 0;
int left = depth(root.left);
int right = depth(root.right);
if(root.left == null && root.right == null)
return 1;
if(root.left == null || root.right == null)
return Math.max(left, right) + 1;
else
return Math.min(left, right) + 1;
}
}