public void print(Node root,int one,List<Integer> path,int tmpsum){
if(this.root==null){
return;
}
tmpsum += root.value;
path.add(this.root.value);//报错指的这一行(共两行)
boolean leaf = (root.left==null&&root.right==null);
if(leaf&&tmpsum==one){
for(int i:path){
System.out.print(i+"->");
}
System.out.println("end");
}
print(this.root.left,one,path,tmpsum);//报错指的这一行(共两行)
print(this.root.right,one,path,tmpsum);
path.remove(path.size()-1);
}
------解决思路----------------------
把public void print(Node root,int one,List<Integer> path,int tmpsum)方法中的this去掉
this.root是指当前访问对象的root,而实际我们要用到的这个方法中的root
如果是this.root这样总是取跟节点就死循环了
public void print(Node root,int one,List<Integer> path,int tmpsum){
if(root==null){
return;
}
tmpsum += root.value;
path.add(root.value);
boolean leaf = (root.left==null&&root.right==null);
if(leaf&&tmpsum==one){
for(int i:path){
System.out.print(i+"->");
}
System.out.println("end");
}
print(root.left,one,path,tmpsum);
print(root.right,one,path,tmpsum);
path.remove(path.size()-1);
}
------解决思路----------------------
参考楼上的。