日期:2014-05-19  浏览次数:20588 次

这段代码为什么会出错的
private List list;
public void inOrder(){
if(this.left!=null){
this.left.inOrder();
}
if(this.root!=null){
list.add(root.getDate());
System.out.println(root.getDate()+" ");
}
if(this.right!=null){
this.right.inOrder();
}
}

遍历二叉树,我想用一个List将二叉树的数组都保存起来,但是不成功,list的永远只有一个。
我debug发现私有变量list每次递归的地址都不一样
为什么会这么样的呢

------解决方案--------------------
应该是不一样。this指当前节点对象。左节点对象的list当然跟右节点对象的list不同。可是试试把list加上static修饰变成类成员,而不是对象成员。
------解决方案--------------------
private List list = new ArrayList();list是接口,需要实现类
------解决方案--------------------
楼上正解
------解决方案--------------------
代码不全,你的第一个判读
if(this.left!=null){
this.left.inOrder();
}
this.left.inOrder();是哪个?