26.路径总和II

题目描述

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

解题思路

深度优先算法

我们可以采用深度优先搜索的方式,枚举每一条从根节点到叶子节点的路径。当我们遍历到叶子节点,且此时路径和恰为目标和时,就找到了一条满足条件的路径。

Code:

class Solution{
    List<List<Integer>> ans = new LinkedList<>();
    LinkedList<Integer> path = new LinkedList<>();

    public List<List<Integer>> pathSum(TreeNode root,int sum){
        dfs(root,sum);
        return ans;
    }

    public void dfs(TreeNode root,int sum){
        if(root == null){
            return;
        }
        path.add(root.val);
        sum -= root.val;
        if(root.left == null && root.right == null && sum == 0){
            ans.add(new LinkedList<Integer>(path));
        }
        dfs(root.left,sum);
        dfs(root.right,sum);
        path.removeLast();
    }
}

results matching ""

    No results matching ""