题目描述
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
样例描述
输入:root = [3,9,20,null,null,15,7]
输出:2
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
思路
- 递归法。每进入一个结点,先将深度加1。 若是叶子结点,则更新min,然后递归遍历左右子树即可。
代码
class Solution {
int min = 999999;
public int minDepth(TreeNode root) {
if (root == null) {
return 0;
}
getMinDepth(root, 0);
return min;
}
public void getMinDepth(TreeNode root, int depth){
if ( root == null) return;
depth ++;
if (root.left == null && root.right == null){
min = Math.min(depth, min);
}
getMinDepth(root.left, depth);
getMinDepth(root.right, depth);
}
}