# 剑指offer解题报告(Java版)——二叉树中和为某一值的路径 25

public void findPath(BinaryTreeNode root, int expectedSum,

Stack<Integer> path, int currentSum) {

if (root == null)

return;

currentSum += root.data;

path.push(root.data);

boolean isLeaf = root.leftNode == null && root.rightNode == null;

if (isLeaf) {

if (currentSum == expectedSum) {

System.out.println(“A path is”);

for (int i : path)

System.out.print(i+” “);

System.out.println();

}

} else {

if (root.leftNode != null) {

findPath(root.leftNode, expectedSum, path, currentSum);

}

if (root.rightNode != null) {

findPath(root.rightNode, expectedSum, path, currentSum);

}

}

currentSum -= root.data;

path.pop();

}

MySo2 mySo2=new MySo2();

Stack path=new Stack<>();

int currentSum=0;

mySo2.findPath(root1, 22, path, currentSum);

findPath函数中，首先判断一下root是否为空，为空的话就没什么好玩儿的了

if (root.leftNode != null) findPath(root.leftNode, expectedSum, path, currentSum);这条语句，接下来应该执行进入右子树的语句了，接下来也就没什么好说的了

原文作者：keedor
原文地址: https://www.cnblogs.com/keedor/p/4468164.html
本文转自网络文章，转载此文章仅为分享知识，如有侵权，请联系博主进行删除。