首页 > 代码库 > Minimum Depth of Binary Tree,求树的最小深度

Minimum Depth of Binary Tree,求树的最小深度

算法分析:递归和非递归两种方法。

public class MinimumDepthofBinaryTree {		//递归,树的最小深度,就是它左右子树的最小深度的最小值+1	public int minDepth(TreeNode root) {        if(root == null)        {        	return 0;        }        int lmin = minDepth(root.left);        int rmin = minDepth(root.right);        if(lmin == 0 && rmin == 0)        {        	return 1;        }        if(lmin == 0)//左子树为空,右子树不为空,则最小深度为右子子树的最小深度+1        {        	return rmin + 1;         }        if(rmin == 0)        {        	return lmin + 1;        }        return Math.min(lmin, rmin)+1;    }			//非递归,按层遍历	public int minDepth2(TreeNode root) {		if(root == null)		{			return 0;		}		ArrayList<TreeNode> list = new ArrayList<>();		int count = 1;		list.add(root);		while(!list.isEmpty())		{			ArrayList<TreeNode> temp = new ArrayList<>();			for (TreeNode node : list) {				if(node.left == null && node.right == null)//当节点左右子树都为空时,该节点的深度即为树的最小深度				{					return count;				}				if(node.left != null)				{					temp.add(node.left);				}				if(node.right != null)				{					temp.add(node.right);				}			}			count ++;//按层遍历,每循环一次,就是一层,层数加1			list = temp;		}		return count;    }}

  

Minimum Depth of Binary Tree,求树的最小深度