也就是说在java中没有c++中的指针,那么在实现链表或树的时候会用引用实现,例如
java实现二叉树
定义Node节点
class Node{
   int iData;
   double fData;
   Node leftChild; //node 的左节点
   Node rightChild;//node 的右节点
}
那么例如我们在实现中序遍历的时候就可以这样写
private void inOrder(Node localRoot){
   if(localRoot != null){
       inOrder(localRoot.leftChild);
       System.out.print(localRoot.iData+" ");
       inOrder(localRoot.rightChild);
   }
}
那么这里我有些疑惑就是java中这个node节点是怎么知道他的leftChild指向哪里的呢。
同样的道理,链表里也大概是这种所谓自引用的东西

解决方案 »

  1.   

    初始化。
    Node leftLeaf = new Node(1,1.0,null,null);
    Node reghtLeaf = new Node(3,232.0,null,null);
    Node parent = new Node(23,343.0,leftLeaf,rightLeaf);
      

  2.   

    java new 出来的对象其实就是指针。不过用面象对象的角度去思考问题。
      

  3.   

    还有如:Student.java            public class Student{                private String name;                private int age;                Student next;  //指向下一个结点(具体怎么指向呢,直接student.next就指向下一个了让我很不明白)                 public Student(String name,int age){                    this.name = name;                    this.age = age;                }            }
      

  4.   

    java中的引用,你可以理解成final指针。也就是说,不能改变的。其实也是指针。
    但是java中没有多重指针一说。
      

  5.   

    谢谢各位,我可能没有说清楚,是这样,例如Node node = new Node();
    那么node.leftchild;里面应该是leftchild节点的引用吧,用来找到node的左节点,但我没有赋值给node.leftchild阿 他是怎么得到的子节点的引用的呢?
      

  6.   


    Student next;  //指向下一个结点(具体怎么指向呢,直接student.next就指向下一个了让我很不明白) 
    在Student类内部引用了自身,当在实例化对象时传入参数,实际上就是传入了一段属于student的内存空间,这样就和C中的指针类似。
      

  7.   

    你把java想象成只有*指针,没有**及以上指针就明白了
      

  8.   

    你在插入的时候会把leftchild指向左子树,rightchild指向右子树,也就是说
    leftchild = newNode,rightchild = newNode2
    newNode和newNode2是他们的子树
      

  9.   

    引用JAVA中的引用就是C++中的指针