113. 路径总和 II

题目:

113. 路径总和 II
面试题34. 二叉树中和为某一值的路径
在这里插入图片描述

题解:回溯法

  1. 解释一:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 解释二:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

代码:回溯法


/**
 * code113
 */

import java.util.*;

public class code113 {

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

    public static void dfs(List<List<Integer>> res, List<Integer> list, TreeNode root, int sum, int count) 
    {
        if(root.left == null && root.right == null)
        {
            if(count == sum)
            {
                List<Integer> temp = new ArrayList<>(list); // 创建一个 list 的副本
                res.add(temp);
            }
        }
        if(root.left != null) 
        {
            list.add(root.left.val);
            dfs(res, list, root.left, sum, count + root.left.val);
            list.remove(list.size() - 1);
        }
        if(root.right != null) 
        {
            list.add(root.right.val);
            dfs(res, list, root.right, sum, count + root.right.val);
            list.remove(list.size() - 1);
        }
    }

    public static void main(String[] args) {
        Integer nums[] = { 5, 4, 8, 11, null, 13, 4, 7, 2, null, null, 5, 1 };
        TreeNode tree = ConstructTree.constructTree(nums);
        System.out.println("***************************************");
        TreeOperation.show(tree);
        System.out.println("***************************************");
        int sum = 22;
        List<List<Integer>> ans = pathSum(tree, sum);
        System.out.println(ans.toString());
        System.out.println("***************************************");
    }
}

参考:

  1. 在所有 java 提交中击败了 100.00% 的用户
  2. 1ms,100%.递归(自上而下,过程记录每条子序列的总和,以及符合条件的路径)
  3. DFS
  4. Java DFS+回溯 击败98%
  5. 通用树形DFS
  6. Java回溯法 击败95%
  7. [Java] DFS+回溯解法 - Clean code+解释
  8. DFS-将路径存储在辅助栈中
  9. Java 前序遍历
  10. 递归+深度优先搜索
  11. 面试题34. 二叉树中和为某一值的路径(回溯法,清晰图解)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev_zyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值