请教大家关于java传引用和传值的问题? 20

packagecn.xym.algorithm.tree;/*为使代码容易理解,类中成员访问权限不设置成private*/classTreeNode{TreeNodelc... package cn.xym.algorithm.tree;

/*为使代码容易理解,类中成员访问权限不设置成private*/
class TreeNode{
TreeNode lchild;
TreeNode rchild;
int data;
public TreeNode(int data) {
this.data = data;
}
}

public class BinarySortTree {

private TreeNode rootNode = null;

/*传入一个数组,根据数组内的值来创建一个二叉排序树(或称二叉搜索树)*/
public TreeNode createTree(int[] arrays){

for (int i=0; i<arrays.length; ++i){
insertNode(rootNode, arrays[i]); //(======debug了一下,发现每次循环rootNode都等于null呀,这个东东传入函数不是传引用类型么,那不能实例化么???=======)
}

return rootNode;
}

/*通过比对data值,来决定所需要插入节点的位置*/
public void insertNode(TreeNode node, int data){
if (node == null){
//如果节点为空,为"root"节点或者"叶子"节点
node = new TreeNode(data); //(=======这里不是实例化rootNode了么???=====)
node.data = data;
node.lchild = null;
node.rchild = null;
}else{
//如果当前节点存在,即将它们做比较,看应该放在左子树还是右子树
if (node.data < data){
insertNode(node.rchild, data);
}else{
insertNode(node.lchild, data);
}
}
}

public static void main(String[] args) {
int[] arrays = new int[]{50,20,15,30,70,60};
BinarySortTree tree = new BinarySortTree();
TreeNode root = tree.createTree(arrays);
tree.PreOrderTraversal(root);
}

}
展开
 我来答
呓梦寻花
2014-03-13
知道答主
回答量:13
采纳率:0%
帮助的人:8.5万
展开全部
Java 调用另一个方法的时候会进行堆栈操作 虽然是内容相同 其实内存地址已经变了
insertNode 这个方法需要返回 node 才行

你就当作是值传递好了
建议你看下 http://blog.csdn.net/UnAgain/article/details/774039
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
满眼尽是红尘欲
2014-03-13 · 超过17用户采纳过TA的回答
知道答主
回答量:56
采纳率:100%
帮助的人:37.6万
展开全部
当insertNode返回的时候,new的空间就被释放了,或者说java中和C++是不一样的。
你可以修改节点的内容,而不能修改节点本身的值
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友835f630d
2014-03-14 · TA获得超过196个赞
知道小有建树答主
回答量:516
采纳率:0%
帮助的人:158万
展开全部
自己设计时就是空,还说个毛线。this你以为不用钱吗。一次一次的被压迫,一次一镒被义施放。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式