题目
法1:BFS
class Solution {public int minDepth(TreeNode root) {if (root == null) {return 0;}int depth = 1;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {int curSize = queue.size();for (int i = 0; i < curSize; ++i) { // 上面记录curSize配合内部for循环的操作很棒!!!TreeNode topNode = queue.poll();if (topNode.left == null && topNode.right == null) {return depth;}if (topNode.left != null) {queue.offer(topNode.left);}if (topNode.right != null) {queue.offer(topNode.right);}}++depth;}return depth;}
}
法2:DFS
class Solution {public int minDepth(TreeNode root) {if (root == null) {return 0;}if (root.left == null && root.right == null) {return 1;} else if (root.left == null) {return 1 + minDepth(root.right);} else if (root.right == null) {return 1 + minDepth(root.left);} else {return Math.min(1 + minDepth(root.left), 1 + minDepth(root.right));}}
}