leetcode111:二叉树最小深度(java实现)

1.需求:

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回它的最小深度  2.

 

2.思路

判断每层的子节点是否还有子节点

没有则返回其深度+1,1是根节点本身的深度

有则继续用同样的方法进行判断,固这里选用递归的解法

最后比较左右节点的深度那个最小

 

3.代码实现

public int minDepth(TreeNode root){
    //子节点为null返回0
    if(root==null) return 0;
    //左右节点递归调用        
    int left = minDepth(root.left);
    int right = minDepth(root.right);
    //比较左右节点,返回小的那个深度
    return (left==0||right==0)?left+right+1:Math.min(left,right)+1;
}

 

你可能感兴趣的:(算法)