`
blue2048
  • 浏览: 183736 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[leetcode]Path Sum II - java 回溯法

阅读更多
/**

 * Definition for binary tree

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

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

 * }

 */

public class Solution {

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

        

        List<List<Integer>> results  = new ArrayList<List<Integer>>();

        if(root==null){

            return results;

        }

        List<Integer> result = new ArrayList<Integer>();

        result.add(root.val);

        eSum(root, root.val, sum, result, results);

        return results;

    }



    private void eSum(TreeNode node, int s, int sum, List<Integer> result, List<List<Integer>> results){

        if(node.left==null && node.right==null){

            if(s == sum){

                List<Integer> r = new ArrayList<Integer>();

                for(Integer e : result){

                    r.add(e);

                }

                results.add(r);

            }

            return;

        }

        if(node.left != null){

            s+=node.left.val;

            result.add(node.left.val);

            int length = result.size()-1;

            eSum(node.left, s, sum, result, results);

            s-=node.left.val;

            result.remove(length);

        }

        if(node.right != null){

            s+=node.right.val;

            result.add(node.right.val);

            int length = result.size()-1;

            eSum(node.right, s, sum, result, results);

            result.remove(length);

        }

    }

}

 

分享到:
评论

相关推荐

    leetcode答案-leetcode-[removed]用javascript刷LeetCode

    这包括但不限于排序算法(冒泡、选择、插入、快速、归并排序)、查找算法(线性、二分查找)、动态规划、贪心算法、回溯法、深度优先搜索(DFS)和广度优先搜索(BFS)。这些算法是解决许多LeetCode挑战的关键。 ...

    Leetcode打谱集.pdf

    此外,文档还提到了另一个问题——路径总和II(Path Sum II),这是一个寻找二叉树中特定和的路径的问题。虽然没有给出完整的代码,但可以看出这个问题涉及到递归或深度优先搜索(DFS)的策略,可能需要使用回溯法来...

    leetcode分类-leetcode:leetcode刷题(中等难度分类)

    1. 回溯法:中等难度题目中,回溯法是一种常见的解决方案,如"Combination Sum"(组合总和)和"N-Queens"(皇后问题),通过回溯可以找到所有可能的解。 2. 动态规划:"House Robber"(打家劫舍)系列问题,展示了...

    leetcode答案-leetcode:leetcode上的算法答案

    例如“组合总和”(Combination Sum)题目,通过回溯法找出所有可能的组合。 8. **动态规划**:解决最优化问题的利器,通过构建状态转移方程,避免重复计算。如“最长连续序列”(Longest Consecutive Sequence)...

    leetcode常见的100热点算法题

    例如,"N-Queens"(八皇后问题)和"Word Search"(单词搜索)就是使用回溯法求解的例子。 4. **贪心算法**:贪心算法在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的。如...

    leetcode-practice:解决问题的实践; 数据结构和算法审查

    在LeetCode中,常见的算法包括排序(冒泡、选择、插入、快速、归并)、搜索(深度优先、广度优先)、动态规划、贪心算法、回溯法等。例如,排序算法用于整理数据,而搜索算法则用于在数据集中查找特定元素。动态规划...

    leetCode:Leetcode解决方案

    4. 回溯法:回溯法是一种试探性解决问题的方法,若发现某步选择不合适,则退回上一步重新选择。如N-Queens Problem(八皇后问题)。 5. 分治法:将大问题分解为相似的小问题来解决,如Merge Sort(归并排序)和...

    Leetcode:LeetCode 刷题总结

    6. **回溯法**:回溯法通常用于解决组合优化问题,如"八皇后问题"(N-Queens)或"单词搜索"(Word Search)。 7. **图论**:图论问题涉及节点和边的连接,如"最短路径"(Shortest Path)或"最小生成树"(Minimum ...

    2、DFS、回溯、分治法必练题(含答案).pdf

    * Path Sum:该题目要求判断一棵二叉树中是否存在路径和为给定值的路径。解决该题目需要使用深度优先搜索算法,递归地搜索每个节点,然后判断路径和是否等于给定值。 回溯算法 回溯算法是一种常用的搜索算法,用于...

    leetcode:我的leetcode培训。 实践使完美!

    8. **回溯法**:解决组合问题,如八皇后问题、N皇后问题等。"字母异位词分组"(Group Anagrams)可以用回溯法解决。 9. **图论**:如最短路径、最小生成树等。"最短路径问题"(Shortest Path in a Grid with ...

    LeetcodeSolutions:我收集的评论很好的leetcode问题解决方案

    在解题过程中,我们常常会遇到动态规划、贪心算法、回溯法、深度优先搜索(DFS)、广度优先搜索(BFS)等经典算法。这些算法思路的运用,能够帮助我们解决各种复杂问题,比如寻找最短路径、构建最优树形结构、计算...

    LeetCode

    9. **回溯法(Backtracking)**:尝试所有可能的解决方案,如“N皇后问题”(N-Queens)。 10. **位操作(Bit Manipulation)**:利用位运算解决数学问题,如“只出现一次的数字”(Single Number)。 LeetCode-...

    leetcode:我对Leetcode问题的解决方案的集合

    8. **回溯**:回溯法常用于解决排列组合问题,如"全排列"(Permutations),需要生成所有可能的排列组合。 9. **动态规划**:动态规划是解决复杂问题的有效方法,如"背包问题"(Knapsack Problem),通过状态转移...

    基于Python数据结构之递归与回溯搜索

    回溯法的基本思想是在搜索过程中遇到不符合条件的情况时,就立即停止继续深入搜索,转而去寻找其他的分支路径。这种方法避免了不必要的计算,提高了搜索效率。 在使用回溯法时,通常会遇到以下几种情况: - **状态...

    LeetCodeAgri.zip

    7. **图论**:虽然在LeetCode中涉及图的题目较少,但依然有"最短路径"(Shortest Path)等题目。Swift中可以使用邻接矩阵或邻接表来表示图。 8. **位运算**:Swift的整型支持位运算,如"位异或运算"(XOR Operation...

    Codes

    3. 递归与回溯:LeetCode中的很多问题,如"Word Search"或"N-Queens",可以通过递归和回溯法来解决。递归是解决问题的一种优雅方式,而回溯则常用于在多解问题中找到所有可能的解。 4. 字符串处理:在"Longest ...

Global site tag (gtag.js) - Google Analytics