题目:
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和节点3是第二层,节点4是第三层,那么对于这个二叉树来讲,最小深度就是2,从根节点1到叶子节点3需要经过1和3两个节点。
扩展的想一下,所以应用层次遍历的方法,只需要从第一层向下遍历,知道出现第一个没有子节点的节点a,那么这个a所在的层n就是这个二叉树的最小深度。
代码:
Java实现,使用两个栈去实现层次遍历,栈a存储当前层节点,栈b存储栈a中节点的子节点。如果栈a中有某一个节点没有子节点时,得到当前节点所在的层数,就是最小深度。
二叉树:
public class TreeNode {
int val;
TreeNode left;
TreeNode right;