本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41964249
Minimum Depth of Binary Tree
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.
思路:
(1)题意为求解二叉树最小深度:即为从树根到叶子节点最短路径。
(2)这道题的思路和按层次输出二叉树类似,按层次输出二叉树可以参照http://blog.csdn.net/pistolove/article/details/41929059。
(3)为了找到最短路径,在对二叉树进行层次遍历过程中,如果遇到第一个叶子节点,则该叶子节点到根节点的距离即为最短路径。所以只需在对二叉树层次遍历的过程中,判断遍历的节点是否有左右孩子节点,如果没有左右孩子节点,则该节点到根节点之间的距离即为最短路径。
(4)如果能够理解二叉树层次遍历的思想,那么相关的很多题目都能从中得到解答。
(5)希望对你有所帮助。谢谢。
算法代码实现如下所示:
//最小深度
public static int getUndeep(TreeNode root){
if(root==null) return 0;
if(root!=null&&root.left==null&&root.right==null) return 1;
//根节点不为空 默认为1层
int level = 1;
LinkedList<TreeNode> list = new LinkedList<TreeNode>();
list.add(root);
int first = 0;
int last = 1;
while(first<list.size()){
last = list.size();
while(first<last){
if(list.get(first).left!=null){
list.add(list.get(first).left);
}
if(list.get(first).right!=null){
list.add(list.get(first).right);
}
if(list.get(first).left==null && list.get(first).right==null){
return level++;
}
first++;
}
level++;
}
return level;
}