給定一個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明:?葉子節點是指沒有子節點的節點。
示例:
給定二叉樹?[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; }
}
?