leetcode刷題筆記一百一十一題 二叉樹的最小深度
阿新 • • 發佈:2020-08-06
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)) } }