package com.leetcode.problem;
import java.security.PrivateKey;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/**
* @author pxu
* @create 2020-04-26 21:51
*/
public class Problem113 {
private List> res = new ArrayList<>();
public static void main(String[] args) {
TreeNode n1 = new TreeNode(1);
TreeNode n2 = new TreeNode(5);
TreeNode n3 = new TreeNode(2);
TreeNode n4 = new TreeNode(7);
TreeNode n5 = new TreeNode(4);
TreeNode n6 = new TreeNode(13);
TreeNode n7 = new TreeNode(11);
TreeNode n8 = new TreeNode(8);
TreeNode n9 = new TreeNode(4);
TreeNode n10 = new TreeNode(5);
n10.left = n9;n10.right = n8;
n9.left = n7;
n8.left = n6;n8.right = n5;
n7.left = n4;n7.right = n3;
n5.left = n2;n5.right = n1;
Problem113 p113 = new Problem113();
System.out.println(p113.pathSum(n10, 22));
}
public List> pathSum(TreeNode root, int sum) {
if(root == null)
return res;
Stack stack = new Stack<>();
pathSumHelper(root,stack,sum);
return res;
}
public void pathSumHelper(TreeNode root, Stack stack,int sum)
{
if(nodeIsLeaf(root))
{
if(root.val == sum)
{
stack.push(root.val);
res.add(new ArrayList<>(stack));
stack.pop();
}
return;
}
else if(root.val< sum)
{
if(root.left != null)
{
stack.push(root.val);
pathSumHelper(root.left,stack,sum - root.val);
stack.pop();
}
if(root.right != null)
{
stack.push(root.val);
pathSumHelper(root.right,stack,sum - root.val);
stack.pop();
}
}
else
return;
}
public boolean nodeIsLeaf(TreeNode node)
{
if(node.left == null && node.right == null)
return true;
else
return false;
}
}