LeetCode | Path Sum II

2014-11-24 09:48:29 · 作者: · 浏览: 0

题目

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]
]
分析

这题直接用递归写,类似DFS。

代码

import java.util.ArrayList;

public class PathSumII {
	public class TreeNode {
		int val;
		TreeNode left;
		TreeNode right;

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

	private ArrayList
  
   > results;

	public ArrayList
   
    > pathSum(TreeNode root, int sum) { results = new ArrayList
    
     >(); ArrayList
     
       list = new ArrayList
      
       (); solve(root, sum, list); return results; } private void solve(TreeNode root, int sum, ArrayList
       
         list) { if (root == null) { return; } list.add(root.val); if (sum == root.val && root.left == null && root.right == null) { results.add(new ArrayList
        
         (list)); } else { solve(root.left, sum - root.val, list); solve(root.right, sum - root.val, list); } list.remove(list.size() - 1); } }