1.题目:
返回的是所以合适的路径
思路:
首先遍历根结点,所以可以采用树的先序遍历,遍历完一条路径后将其叶子节点删除重新回到其根结点中
代码:
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>> resultsList = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> CurList = new ArrayList<Integer>();
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
if(root==null)
return resultsList;
CurList.add(root.val);
target=target-root.val;
if(target==0 && root.left==null && root.right==null)
resultsList.add(new ArrayList<Integer>(CurList));
FindPath(root.left,target);
FindPath(root.right,target);
CurList.remove(CurList.size()-1);//遍历完以后再删除节点
return resultsList;
}
}