请教大家关于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);
}
} 展开
/*为使代码容易理解,类中成员访问权限不设置成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);
}
} 展开
3个回答
展开全部
Java 调用另一个方法的时候会进行堆栈操作 虽然是内容相同 其实内存地址已经变了
insertNode 这个方法需要返回 node 才行
你就当作是值传递好了
建议你看下 http://blog.csdn.net/UnAgain/article/details/774039
insertNode 这个方法需要返回 node 才行
你就当作是值传递好了
建议你看下 http://blog.csdn.net/UnAgain/article/details/774039
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当insertNode返回的时候,new的空间就被释放了,或者说java中和C++是不一样的。
你可以修改节点的内容,而不能修改节点本身的值
你可以修改节点的内容,而不能修改节点本身的值
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己设计时就是空,还说个毛线。this你以为不用钱吗。一次一次的被压迫,一次一镒被义施放。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询