待解决)leetcode 路径和 dfs 线序遍历

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.

For example:
Given the below binary tree and sum = 22,

              5

             / \

            4   8

           /   / \

          11  13  4

         /  \    / \

        7    2  5   1

return

[

   [5,4,11,2],

   [5,8,4,5]

]

1。下面的搜索总超时,可能我写的不好

 1 /**

 2  * Definition for binary tree

 3  * public class TreeNode {

 4  *     int val;

 5  *     TreeNode left;

 6  *     TreeNode right;

 7  *     TreeNode(int x) { val = x; }

 8  * }

 9  */

10 public class Solution {

11     ArrayList<ArrayList<Integer>> list=new ArrayList<ArrayList<Integer>>();

12      ArrayList<Integer> arry=new ArrayList<Integer>();

13      

14     public List<List<Integer>> pathSum(TreeNode root, int sum) {

15         

16         if(root==null) return (List)list;

17         if(root.right==null&&root.left==null)

18         {

19             if(sum==root.val)

20             {

21             

22             list.add(new ArrayList(arry));

23             }

24         }

25        

26            arry.add(root.val);

27         pathSum(root.right,sum-root.val);

28       

29         

30         pathSum(root.left,sum-root.val);

31         

32         

33         return (List)list;

34         

35        

36        

37         

38         

39     }

40     

41     

42     

43 }
View Code

 

iew Co
 
 

 

你可能感兴趣的:(LeetCode)