也就是说在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指向哪里的呢。
同样的道理,链表里也大概是这种所谓自引用的东西
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指向哪里的呢。
同样的道理,链表里也大概是这种所谓自引用的东西
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);
但是java中没有多重指针一说。
那么node.leftchild;里面应该是leftchild节点的引用吧,用来找到node的左节点,但我没有赋值给node.leftchild阿 他是怎么得到的子节点的引用的呢?
Student next; //指向下一个结点(具体怎么指向呢,直接student.next就指向下一个了让我很不明白)
在Student类内部引用了自身,当在实例化对象时传入参数,实际上就是传入了一段属于student的内存空间,这样就和C中的指针类似。
leftchild = newNode,rightchild = newNode2
newNode和newNode2是他们的子树