題目:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根結
點開始往下一直到葉結點所經過的結點形成一條路徑。
思路:先保存根節點,然後分別遞歸在左右子樹中找目標值,若找到即到達葉子節點,打印路徑中的值。二叉樹的好像大部分都是用的遞歸的思想,這裏比較重要的是找到遞歸結束的條件,特別注意。
代碼:
public class Solution {
private ArrayList<ArrayList<Integer>> res=new ArrayList<>();
private ArrayList<Integer> list=new ArrayList<>();
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
if(root==null)
return res;
list.add(root.val);
target=target-root.val;
if(root.left==null&&root.right==null&&target==0){
res.add(new ArrayList<>(list));
}else{
FindPath(root.left,target);
FindPath(root.right,target);
}
list.remove(list.size()-1);
return res;
}
}