---
# System prepended metadata

title: binary Tree 的DFS path設計細節

---

# binary Tree 的DFS path設計細節


https://leetcode.com/problems/path-sum/


## 注意細節 區域變數 和全域變數問題 
 我們要得出每一條路徑的總total，遞迴會持續累加沒錯，記得遞迴經典例子：階層： 5! 
但是下面的DFS 卻可以得到不同路徑的path  ，**這是因為區域變數 和全域變數問題**

如果我們把sum設在function外面，會是全域，那他會隨著recursive 去做持續性累加。
但是如果再function 內 ，下面code中他每一個
cur_sum都是新的local variable 所以彼此不會衝突。


```python=
  
        def tree_traversal(root, curr_sum, ans):
            curr_sum += root.val
    
            if root.left is None and root.right is None:
                if curr_sum == targetSum:
                    ans[0] = True

            
            if root.left:
                tree_traversal(root.left, curr_sum, ans)
            
            if root.right:
                tree_traversal(root.right, curr_sum, ans)
        
        if root:
            tree_traversal(root, 0, ans)
        return ans[0]
```