Backtracking中對字符串的傳遞處理:用 StringBuilder 傳遞可以省去遞歸中新建的 string copies.
StringBuilder 的backtrack也很簡單,直接setLength(int len)
Binary Tree Paths
1.本質是preorder traversal
2.相對於dfs多了一個判斷當前node是否是葉子,如果是葉子就backtrack,反之就不backtrack
2. 在leaf node上使用sb.setLength()來backtracking(因爲後面的兩個 dfs 都沒有做)
3. 在葉子處return完相當於左子樹的helper跳出進入右子樹helper,執行完畢後去dfs,再去backtracking跳到上一層!!!
https://mnmunknown.gitbooks.io/algorithm-notes/content/lu_jing_yu_lu_jing_he.html
113. Path Sum II
1. 在樹上找path都是backtracking,思路和上題一模一樣,加到list前判斷一下sum!
Tree上,一般root不連續,都會想到全局變量!
全局最優解不一定和 root 與 dfs 遞歸連續,因而用全局變量 int max 解決。