日期:2014-05-20  浏览次数:20709 次

一个弱智的问题
我想用java写个二叉树 以下是其中一部分:

public class binaryTree {
  class node{
  int value;
  node left;
  node right;
 
  }
  node root=null;
  //一下是函数
  ......
  ......
}

其中我想做插入,但是不好使,我经过调试 已经把不好使的原因定在一个点上了,一下是简单化的代码:

  public void insertNode(node p, node n){  
  p=n;
  }
   
  public void insert(int num){
  node newNode=new node();
  newNode.value=num;
  newNode.left=newNode.right=null;
  insertNode(root,newNode);
  }
以上的代码只是插入的部分,我做调试用的。
现在的问题是这样 目前只考虑 就加一个节点到root上,但为什么后来测试root总是空的。
也就是在 insert()里 root那个参数 传不到 insertNode()这里
如果我要是把 insertNode()里的 p换成root 那么 新节点就能插入到root了。但是 我传参数传的就是root啊, p就应该是root啊,为什么就不好使呢。  
请大家帮助,谢谢!



------解决方案--------------------
这个问题就和下面的问题是一样的:
Java code

public class Test2
{
    public static void fun(int num1, int num2)
    {
        num1 = num2;
    }
    
    public static void main(String[] args)
    {
        int num1 = 1;
        int num2 = 2;
        fun(num1, num2);
        System.out.println(num1);    //函数内部只是对形参进行了修改,对实参无影响,所以打印出来的num1还是1,不是2
    }
}