第111题:二叉树的最小深度

一. 问题描述

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

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

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

示例:

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

    3

   / \

  9  20

      /  \

   15   7

返回它的最小深度  2.

二. 解题思路

本题思路:采用深度优先遍历+递归的方式进行求解。

步骤一:构建递归函数(根节点),采用自下而上的方式,先从叶节点进行判断,找到其最低深度。

步骤二:然后递归上一层节点,判断其左右子树的节点的最小深度,重复递归,最终返回最低深度。

三. 执行结果

执行用时 :0 ms, 在所有 java 提交中击败了100.00%的用户

内存消耗 :37.6 MB, 在所有 java 提交中击败了56.49%的用户

四. Java代码

class Solution {
    public int minDepth(TreeNode root) {
        if(root==null) {
           return 0;
       }else {
           return getTree(root);
       }
    }
    public int getTree(TreeNode root) {
        int leftnum=1,rightnum=1;
        
        if(root.left!=null) {
            leftnum=getTree(root.left)+1;
        }
        if(root.right!=null) {
            rightnum=getTree(root.right)+1;
        }
        if(root.left!=null&&root.right!=null) {
            return Math.min(leftnum, rightnum);
        }else {
            return Math.max(leftnum, rightnum);
        }
        
    }
}

 

posted @ 2019-11-12 15:04  fish大叔  阅读(145)  评论(0编辑  收藏  举报