今天看到一道二叉樹的簡單算法題, 給大家分享一下
如果你想知道什么題? 既然你誠心誠意的發(fā)問了, 我就大發(fā)慈悲的告訴你!
給定一個二叉樹,找出其最大深度。
二叉樹的深度為根節(jié)點到最遠(yuǎn)葉子節(jié)點的最長路徑上的節(jié)點數(shù)。
說明: 葉子節(jié)點是指沒有子節(jié)點的節(jié)點。
示例:
給定二叉樹 [1,2,3,null,null,4,5],
1
/ \
2 3
/ \
4 5
返回它的最大深度 3 。
/**
* 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
* }
* }
*/
func maxDepth(_ root: TreeNode?) -> Int {
guard let root = root else { return 0 }
return max(maxDepth(root.left) + 1, maxDepth(root.right) + 1)
}
/**
* 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
* }
* }
*/
func maxDepth(_ root: TreeNode?) -> Int {
guard let root = root else { return 0 }
let leftDepth = maxDepth(root.left)
let rightDepth = maxDepth(root.right)
return max(leftDepth, rightDepth) + 1
}
題目來源:力扣(LeetCode) 感謝力扣爸爸 :)