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每次递归的地址都不一样
为什么会这么样的呢

解决方案 »

  1.   

    应该是不一样。this指当前节点对象。左节点对象的list当然跟右节点对象的list不同。可是试试把list加上static修饰变成类成员,而不是对象成员。
      

  2.   

    private List list = new ArrayList();list是接口,需要实现类
      

  3.   

    代码不全,你的第一个判读
    if(this.left!=null){
    this.left.inOrder();
    }
    this.left.inOrder();是哪个?
      

  4.   

    赞同2楼的说法 ,楼主需要理解this的作用