leetcode刷题笔记一百一十一题 二叉树的最小深度

leetcode刷题笔记一百一十一题 二叉树的最小深度

源地址:111. 二叉树的最小深度

问题描述:

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

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

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

示例:

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

3

/
9 20
/
15 7

/**
本题还是基于递归的思想,需要注意的是题目中对于叶子节点的说明。即没有子结点的结点
所以对当前节点的情况需要进行讨论
若要改为迭代方法, 可以使用两个栈结构将当前结点与其的高度分别压入栈即可
*/
/**
 * Definition for a binary tree node.
 * class TreeNode(var _value: Int) {
 *   var value: Int = _value
 *   var left: TreeNode = null
 *   var right: TreeNode = null
 * }
 */
object Solution {
    def minDepth(root: TreeNode): Int = {
        //当前结点为null
        if (root == null) return 0
        //单子树结点,需要考虑单子树的高度
        if (root.left == null) return 1 + minDepth(root.right)
        if (root.right == null) return 1 + minDepth(root.left)
        //双子树结点,考虑两子树的最小深度
        return 1 + Math.min(minDepth(root.left), minDepth(root.right)) 
    }
}
原文地址:https://www.cnblogs.com/ganshuoos/p/13447104.html