【編程題】二叉樹中和爲某一值的路徑(Java實現)

【編程題】二叉樹中和爲某一值的路徑(Java實現)

題目來源

劍指offer第24題
https://www.nowcoder.com/questionTerminal/b736e784e3e34731af99065031301bca

題目描述

輸入一顆二叉樹的根節點和一個整數,打印出二叉樹中結點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,數組長度大的數組靠前)

題目代碼

import java.util.ArrayList;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    ArrayList<ArrayList<Integer>>printlist=new ArrayList<ArrayList<Integer>>();
    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
        if(root==null)
            return printlist;
        return findPath(root,target,new ArrayList<>());
       
    }
    public ArrayList<ArrayList<Integer>> findPath(TreeNode root,int target,ArrayList<Integer>list){
        if(root==null)
            return printlist;
        target-=root.val;
        list.add(root.val);
        if(root.left==null&&root.right==null){
            if(target==0)
                printlist.add(new ArrayList<>(list));
        }
        findPath(root.left,target,list);
        findPath(root.right,target,list);
        list.remove(list.size()-1);
        return printlist;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章