题目:leetcode111. 二叉树的最小深度(层次遍历)
描述
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
思路
看到这道题,我第一时间就是想到了层次遍历,这道题无非就是一层一层地找一个叶子结点,叶子结点就是左节点和右节点都为null的结点,那么我们就可以使用队列解决。最后输出深度,深度就是答案。
import java.util.Deque;
import java.util.LinkedList;
public class Solution {
public int minDepth(TreeNode root) {
if(root==null)
return 0;
Deque<TreeNode> deque=new LinkedList<>();
deque.offer(root);
int length,depth=0;
while(!deque.isEmpty())
{
depth++;
length=deque.size();
while(length>0)
{
TreeNode node=deque.poll();
if(node.left==null && node.right==null) {
deque.clear();
length=0;
}
if(node.left!=null)
deque.offer(node.left);
if(node.right!=null)
deque.offer(node.right);
length--;
}
}
return depth;
}
}