LeetCode Path Sum II

原创 2015年07月07日 12:10:25

Description:

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

Solution:

还是一样的DFS。

和Path Sum相比,有一个细节:DFS的每个层次递归的条件有所不同。

import java.util.*;

public class Solution {
	int targetSum;
	List<List<Integer>> list = new ArrayList<List<Integer>>();

	public List<List<Integer>> pathSum(TreeNode root, int sum) {
		if (root == null)
			return list;
		this.targetSum = sum;
		ArrayList<Integer> array = new ArrayList<Integer>();
		array.add(root.val);
		dfs(root, root.val, array);
		return list;
	}

	void dfs(TreeNode root, int tempSum, ArrayList<Integer> array) {
		if (root.left == null && root.right == null) {
			if (tempSum == targetSum)
				list.add(new ArrayList<Integer>(array));
		}
		if (root.left != null) {
			array.add(root.left.val);
			dfs(root.left, tempSum + root.left.val, array);
			array.remove(array.size() - 1);
		}
		if (root.right != null) {
			array.add(root.right.val);
			dfs(root.right, tempSum + root.right.val, array);
			array.remove(array.size() - 1);
		}
	}
}


【LeetCode-面试算法经典-Java实现】【113-Path Sum II(路径和)】

【113-Path Sum II(路径和II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a binary tree and a sum, find al...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月12日 06:23
  • 2506

【LeetCode-面试算法经典-Java实现】【064-Minimum Path Sum(最小路径和)】

【064-Minimum Path Sum(最小路径和)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a m x n grid filled with no...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月02日 06:05
  • 2290

leetcode Path Sum II 关于树的后序遍历

我们利用辅助栈来进行树的houxi
  • u012724887
  • u012724887
  • 2014年09月29日 15:12
  • 255

Leetcode 454. 4Sum II 四数之和2 解题报告

1 解题思想首先,这是一道远古之前的题的进化版: Leetcode #18 4Sum 四数之和 解题小节+K-Sum思想 但是我不想说那个题了,因为我也记不住了。。这道题意思就是ABCD四个数组,长...
  • MebiuW
  • MebiuW
  • 2016年11月16日 22:45
  • 2781

【Leetcode长征系列】Path Sum

原题: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding...
  • u010239096
  • u010239096
  • 2014年07月24日 16:38
  • 633

【LeetCode编程学习(C语言)】1.Two Sum

LeetCode编程之简单篇,两个数求和,采用穷举和hash对比
  • yake827
  • yake827
  • 2016年03月28日 13:39
  • 4314

Path Sum II 二叉树路径和,打印所有路径 @LeetCode

经典递归回溯! package Level2; import java.util.ArrayList; import Utility.TreeNode; /** * Path Sum I...
  • hellobinfeng
  • hellobinfeng
  • 2013年10月19日 03:47
  • 4331

【LeetCode】113. Path Sum II 基于Java和C++的解法及分析

113. Path Sum II  Total Accepted: 80509 Total Submissions: 284188 Difficulty: Medium Given...
  • Jin_Kwok
  • Jin_Kwok
  • 2016年05月09日 22:25
  • 838

leetcode 刷题题解(c++) 1.Two Sum (hash表,排序+二分查找)

c++刷leetcode,有题目和算法代码,可直接在leetcode提交通过。
  • GOGO_YAO
  • GOGO_YAO
  • 2016年07月24日 20:59
  • 555

【LeetCode笔记】113. Path Sum II DFS搜索+记录节点

题目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the...
  • macidoo
  • macidoo
  • 2017年04月15日 16:26
  • 107
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode Path Sum II
举报原因:
原因补充:

(最多只允许输入30个字)