111.Minimum Depth of Binary Tree
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.
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
方法一:採用層次遍歷的方式,設置一個值記錄層,遍歷到的第一個葉子節點的高度就是這棵二叉樹的最小深度。
public int minDepth(TreeNode root) {
if(root == null) return 0;
int count = 0;
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
while(!q.isEmpty()){
count++;
for(int i = 0, n = q.size(); i < n; i++){
TreeNode node = q.poll();
if(node.left == null && node.right == null) return count;
if(node.left != null) q.add(node.left);
if(node.right != null) q.add(node.right);
}
}
return count;
}
方法二:採用遞歸的方式,把問題轉化爲子樹的最小深度。
public int minDepth2(TreeNode root) {
if(root == null) return 0;
int left = minDepth(root.left);
int right = minDepth(root.right);
return (left == 0 || right == 0) ? left + right + 1: Math.min(left,right) + 1;
}