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 解决。