1. 程式人生 > 實用技巧 >leetcode刷題筆記一百一十一題 二叉樹的最小深度

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)) 
    }
}