1. 程式人生 > >Swift 求二叉樹最小深度

Swift 求二叉樹最小深度

給定一個二叉樹,找出其最小深度。

最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。

說明: 葉子節點是指沒有子節點的節點。

示例:

給定二叉樹 [3,9,20,null,null,15,7],返回它的最小深度  2.

我們用遞迴方法求,求法和求最大深度類似,比較一個節點的左右子節點,如果都不為空的話,取最小的子節點長度,如果一個子節點為空,則最小深度就是另一個子節點到根節點的長度。

程式碼如下:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public var val: Int
 *     public var left: TreeNode?
 *     public var right: TreeNode?
 *     public init(_ val: Int) {
 *         self.val = val
 *         self.left = nil
 *         self.right = nil
 *     }
 * }
 */

class Solution{

           func minDepth(_root:TreeNode?)->Int{

                   if root == nil {

                          return 0

                   }

                   if root?.left==nil{

                         return minDepth(root?.right)+1

                    }else if root?.right==nil{

                         return minDepth(root?.left)+1

                   }else{

                          return min(minDepth(root?.left),minDepth(root?.right))+1

                  }

           }

}