static int minDepth(TreeNode root){
if(root ==null) return 0;
if(root.left == null && root.right == null) return 1;
int min = Integer.MAX_VALUE;
if(root.left!=null){
min = Math.min((minDepth(root.left)),min);
}
if(root.right!=null){
min = Math.min((minDepth(root.right)),min);
}
return min+1;
}
static int minDepth1(TreeNode root){
if(root ==null) return 0;
Queue<TreeNode> queue = new LinkedList<>();
root.deep = 1;
queue.offer(root);
while(!queue.isEmpty()){
TreeNode node = queue.poll();
if(node.left == null && node.right == null){
return node.deep;
}
if(node.left!=null){
node.left.deep = node.deep+1;
queue.offer(node.left);
}
if(node.right!=null){
node.right.deep = node.deep+1;
queue.offer(node.right);
}
}
return 0;
}
public static void main(String[] args) {
TreeNode node1 = new TreeNode();
TreeNode node2 = new TreeNode();
TreeNode node3 = new TreeNode();
TreeNode node4 = new TreeNode();
TreeNode node5 = new TreeNode();
TreeNode node6 = new TreeNode();
TreeNode node7 = new TreeNode();
node1.left = node2;
node2.left=node4;
node2.right=node5;
node1.right = node3;
node3.left = node6;
node6.left = node7;
System.out.println(minDepth1(node1));
}