104. Maximum Depth of Binary Tree
https://leetcode.com/problems/maximum-depth-of-binary-tree/
題意
尋找這棵樹最深的節點,他的深度為何?
解題思路
這次的題目與 226 Invert Binary Tree 相似,這次也採用遞歸的做法,不過思路換一套方法。
一樣把每個節點當作是一個 root 節點,然後先宣告一個 depth 的變數出來,每往下一層就 +1 ,往上一層就 -1 ,遍例所有的節點,並且當深度變深的時候,就將答案刷新,最後將答案回傳。
- 宣告全域的深度與結果的變數。
- 開始遞歸查找,只要深度增加就將深度的變數 +1 ,深度減少就 -1。
- 將左節點和右節點當作 root,繼續遞歸調用 calculateDepth 方法。
- 只要深度大於結果,就將結果刷新為當前的深度。
原始碼
/**
* 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 的筆記本 留言,順手給我個讚吧!你的讚將成為我持續更新的動力,感謝你的閱讀,讓我們一起學習成為更好的自己。