/** * 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; * } * } */class Solution { public int minDepth(TreeNode root) { if (root == null){ return 0; } Queue<TreeNode> q = new LinkedList<>(); q.offer(root); int min = 0; while (!q.isEmpty()){ int size = q.size(); min++; for (int i = 0; i < size; i++) { TreeNode temp = q.poll(); if (temp.left != null) q.offer(temp.left); if (temp.right != null) q.offer(temp.right); if (temp.left == null && temp.right == null){ return min; } } } return min; }}
/** * 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; * } * } */class Solution { public int minDepth(TreeNode root){ //终止条件 if (root == null) return 0; int left = minDepth(root.left); int right = minDepth(root.right); 这里要先判断左子树/右子树是否为null if (root.left == null && root.right != null) return right+1; if (root.left!= null && root.right == null) return left + 1; return 1+Math.min(left,right); }}
