题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。
例如输入整数22和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10, 12和10, 5, 7
先弄清楚是什么遍历:这里给出的路径可以看出来,是先序遍历
[code]
class Node{
public int val;
public Node left;
public Node right;
}
public FindRoad(Node node,int num,int sum,List stack){
sum+=node.val;
stack.add(node.val);
if(node.left==null&&node.right==null&&sum==num){
打印
}
if(node.left!=null){
FindRoad(node.left,num,sum,stack);
}
if(node.right!=null){
FindRoad(node.right,num,sum,stack);
}
sum -= stack.remove(stack.size()-1);
}
[/code]
例如输入整数22和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10, 12和10, 5, 7
先弄清楚是什么遍历:这里给出的路径可以看出来,是先序遍历
[code]
class Node{
public int val;
public Node left;
public Node right;
}
public FindRoad(Node node,int num,int sum,List stack){
sum+=node.val;
stack.add(node.val);
if(node.left==null&&node.right==null&&sum==num){
打印
}
if(node.left!=null){
FindRoad(node.left,num,sum,stack);
}
if(node.right!=null){
FindRoad(node.right,num,sum,stack);
}
sum -= stack.remove(stack.size()-1);
}
[/code]