白話解 Leetcode - 104 Maximum Depth of Binary Tree

Posted by Alan Zhan on Tuesday, June 14, 2022

104. Maximum Depth of Binary Tree

https://leetcode.com/problems/maximum-depth-of-binary-tree/


題意

尋找這棵樹最深的節點,他的深度為何?

解題思路

這次的題目與 226 Invert Binary Tree 相似,這次也採用遞歸的做法,不過思路換一套方法。

一樣把每個節點當作是一個 root 節點,然後先宣告一個 depth 的變數出來,每往下一層就 +1 ,往上一層就 -1 ,遍例所有的節點,並且當深度變深的時候,就將答案刷新,最後將答案回傳。

  1. 宣告全域的深度與結果的變數。
  2. 開始遞歸查找,只要深度增加就將深度的變數 +1 ,深度減少就 -1。
  3. 將左節點和右節點當作 root,繼續遞歸調用 calculateDepth 方法。
  4. 只要深度大於結果,就將結果刷新為當前的深度。

原始碼

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
var depth int
var ans int
func maxDepth(root *TreeNode) int {
    depth = 1
    ans = 0
    calculateDepth(root)
    return ans
}

func calculateDepth(root *TreeNode) {
    if root == nil {
        return
    }
    
    if ans < depth {
        ans = depth
    }
    
    depth++
    calculateDepth(root.Left)
    calculateDepth(root.Right)
    depth--
}

結尾

你有更好或更簡單的解決方案嗎?

歡迎到我的 Facebook Alan 的筆記本 留言,順手給我個讚吧!你的讚將成為我持續更新的動力,感謝你的閱讀,讓我們一起學習成為更好的自己。