题目:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。
- 如果当前节点不是叶节点,sum加上当前的值,继续遍历
- 如果当前节点是叶节点,sum加上当前的值,并判断是不是等于和,如果是,则输出,然后回到父节点。
import java.util.Stack;
public class FindSum {
public void FindPathMain(TreeNode root,int expectedSum){
if(root==null||expectedSum<=0) return;
Stack<TreeNode> stack = new Stack<>();
FindPath(root,expectedSum,stack,0);
}
public void FindPath(TreeNode root, int expectedSum, Stack stack,int currentSum){
currentSum += root.val;
stack.push(root);
if(root.left==null&&root.right==null&& currentSum== expectedSum){
System.out.println();
}
if(root.left!=null) FindPath(root.left,expectedSum,stack,currentSum);
if(root.right!=null) FindPath(root.right,expectedSum,stack,currentSum);
stack.pop();
}
}