二叉树中和为某一值的路径

题目描述

输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
 
 1 import java.util.ArrayList;
 2 /**
 3 public class TreeNode {
 4     int val = 0;
 5     TreeNode left = null;
 6     TreeNode right = null;
 7 
 8     public TreeNode(int val) {
 9         this.val = val;
10 
11     }
12 
13 }
14 */
15 public class Solution {
16     public void dfs(ArrayList<ArrayList<Integer>>ans, ArrayList<Integer>temp, TreeNode p, int target){
17         temp.add(p.val);
18         if (p.left == null && p.right == null) {
19             if (target == p.val) {
20           
21                 ans.add(new ArrayList<>(temp));
22                 
23             }
24             temp.remove(temp.size() - 1);
25             return;
26         }
27         if (p.left != null)
28         dfs(ans, temp, p.left, target - p.val);
29         if (p.right != null)
30         dfs(ans, temp, p.right, target - p.val);
31         temp.remove(temp.size() - 1);
32         
33     }
34     public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
35         ArrayList<ArrayList<Integer>> ans = new ArrayList<>();
36         ArrayList<Integer> temp = new ArrayList<>();
37         if (root == null) {
38             return ans;    
39         }
40         dfs(ans, temp, root, target);
41         return ans;
42     }
43 }

 

posted @ 2020-02-21 10:36  hyx1  阅读(138)  评论(0编辑  收藏  举报