劍指筆記-二叉樹中和爲某一值的路徑

題目:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根結
點開始往下一直到葉結點所經過的結點形成一條路徑。

思路:先保存根節點,然後分別遞歸在左右子樹中找目標值,若找到即到達葉子節點,打印路徑中的值。二叉樹的好像大部分都是用的遞歸的思想,這裏比較重要的是找到遞歸結束的條件,特別注意。

代碼:

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;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章