题目:输入一颗二叉树和一个整数,打印出二叉树中节点值的和为输入的整数的所有路径。从树的根节点往下一直到叶节点所经过的节点形成一条路径。
public void findPath(BinaryTree head, int sum, ArrayList lst) {
if (head ==null)return;
lst.add(head);
if (head.mLeft ==null && head.mRight ==null) {
int temp =0;
for (int i =0;i < lst.size();i++)temp += lst.get(i).value;
if (temp == sum) {
for (int i =0;i < lst.size();i++) {
if (i < lst.size() -1)System.out.print(lst.get(i).value +"->");
else System.out.print(lst.get(i).value +"");
}
System.out.println();
}
}
if (head.mLeft !=null)findPath(head.mLeft,sum,lst);
if (head.mRight !=null)findPath(head.mRight,sum,lst);
lst.remove(head);
}
class BinaryTree{
int value;
BinaryTree mLeft;
BinaryTree mRight;
}