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.
BFS层次遍历吧。找到第一个叶子节点,返回深度即可。
ArrayDeque<TreeNode> deque;
ArrayDeque<Integer> deepdeq;
public int minDepth(TreeNode root)
{
if(root==null)
return 0;
deque=new ArrayDeque<>();
deepdeq=new ArrayDeque<>();
deque.add(root);
deepdeq.add(1);
while(!deque.isEmpty())
{
TreeNode t=deque.poll();
int deep=deepdeq.poll();
if(t.left==null&&t.right==null)
return deep;
if(t.left!=null)
{
deque.add(t.left);
deepdeq.add(deep+1);
}
if(t.right!=null)
{
deque.add(t.right);
deepdeq.add(deep+1);
}
}
return -1;
}
DFS遍历也可以,遇到叶子节点就看看深度是不是比当前最小值更小。
public class Solution {
int min=Integer.MAX_VALUE;
public int minDepth(TreeNode root)
{
if(root==null)
return 0;
inorder(root, 1);
return min;
}
public void inorder(TreeNode t,int deep)
{
if(t.left!=null)
inorder(t.left,deep+1);
if(t.left==null&&t.right==null)
min=Math.min(min, deep);
if(t.right!=null)
inorder(t.right,deep+1);
}
}