二叉树的最小深度。

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

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

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    /*
        1.根节点为空,返回0;
        2.左右子节点为空,返回1;
        3.只有左子节点或者只有右子节点,求左子节点或者右子节点的最小路径
        4.既有左子节点又有右子节点,求两个子树的最小路径
    */
    public int minDepth(TreeNode root) {
        if(root==null) return 0;
        int l_min=minDepth(root.left);
        int r_min=minDepth(root.right);
        //如果根节点没有左节点或者右节点
        if(l_min==0||r_min==0) return l_min+r_min+1;
        return Math.min(l_min,r_min)+1;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_31957639/article/details/83211067
今日推荐