给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最小深度 2.
思路:见代码
/*** 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) {if(root == null) return 0;//左孩子和有孩子都为空的情况,说明到达了叶子节点,返回1if(root.left == null && root.right == null) return 1;//左孩子和由孩子其中一个为空,返回较大深度 int m1 = minDepth(root.left);int m2 = minDepth(root.right);//其中一个节点为空,说明有一个必为0,所以可以返回m1 + m2 + 1;if(root.left == null || root.right == null) return m1 + m2 + 1;//左右孩子都不为空,返回最小深度+1return Math.min(m1,m2) + 1; }
}