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

Posted 32ddd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,求树的最小深度的主要内容,如果未能解决你的问题,请参考以下文章

111. Minimum Depth of Binary Tree

Minimum Depth of Binary Tree

[LeetCode]题解(python):111 Minimum Depth of Binary Tree

111. Minimum Depth of Binary Tree

11. Minimum Depth of Binary Tree

11. Minimum Depth of Binary Tree