采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
请问二分搜索树里边的 add(root,e)这个方法 里面 的参数传递方式是引用传递吗,为什么不使用 root 去接收,就不会添加元素呢
//向二分搜索树添加新的元素 public void add(E e){ root = add(root,e); } private Node add(Node root,E e){ if(root == null){ size ++; return new Node(e); }else if(e.compareTo(root.e) < 0){ root.left = add(root.left , e); }else{ root.right = add(root.right , e); } return root; }
代码 root = add(root,e);
替换成 add(root,e); 后
为什么执行 add(root,e) 方法后root 没有添加元素。
在Java里,所有的对象都是引用。
我不很理解你说的用root接受是什么意思,用代码表示一下你的逻辑?
//向二分搜索树添加新的元素 public void add(E e){ root = add(root,e); } private Node add(Node root,E e){ if(root == null){ size ++; return new Node(e); }else if(e.compareTo(root.e) < 0){ root.left = add(root.left , e); }else{ root.right = add(root.right , e); } return root; } 这里的 root = add(root,e); 这行代码 替换成 add(root,e); 后 为什么这个 root 属性 执行add(root,e) 方法后root没有添加元素。
是变量作用域的问题:)因为在private Node add(Node root, E e)中,root是局部变量名,覆盖了类里面的成员变量root。在这个add函数中的root,和类的成员变量root,是两回事儿:)
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
10.3k 16
1.4k 17
1.3k 14
1.2k 14