本文是在学习中的总结,欢迎转载但请注明出处: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; }