DDSA
Advertisement

113. Path Sum II

113.cs
C#
public class TreeNode
{
    public int val;
    public TreeNode left;
    public TreeNode right;
    public TreeNode(int val = 0, TreeNode left = null, TreeNode right = null)
    {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

public class Solution
{
    public IList<IList<int>> PathSum(TreeNode root, int targetSum)
    {
        IList<IList<int>> result = new List<IList<int>>();
        List<int> ds = new();
        PSIIDFS(root, targetSum, ds, result);
        return result;
    }

    private void PSIIDFS(TreeNode root, int targetSum, IList<int> ds, IList<IList<int>> result)
    {
        if (root == null)
            return;

        if (root.val == targetSum && root.left == null && root.right == null)
        {
            ds.Add(root.val);
            result.Add(new List<int>(ds));
            ds.RemoveAt(ds.Count - 1);
            return;
        }

        ds.Add(root.val);
        PSIIDFS(root.left, targetSum - root.val, ds, result);
        PSIIDFS(root.right, targetSum - root.val, ds, result);
        ds.RemoveAt(ds.Count - 1);
    }
}
Advertisement
Was this solution helpful?