请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师您好,在改进代码的add操作时,为什么我这么写root还是等于null

public void add(E e) {
//root = add(root,e);
add(root, e);
}

//向以Node为根的二分搜素树中插入元素E,递归算法。首先是母树,再子树,再子树的子树,形成递归。
//两段代码都实现了二叉搜索树的递归算法。
private Node add(Node node, E e) {

    if (node == null) {
        size++;
        node = new Node(e);
        return node;
    }
  
 我的思路是这样的,在传进第一个结点时,root为空,所以有root = new Node(e), 这个时候已经有了root的新建操作了,为什么在debug时传第二个结点时还显示root == null为true呢

正在回答

1回答

root 传给 add 函数以后,add 函数中的参数 node 指向了 root。


之后,执行 node = new Node(e),node 不再指向 root,而指向了新开辟的空间。


最终,root 仍然指向 null,因为 root 的指向一直没有被修改。


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 凌子祺 #1
    啊我明白了,是node指向了root,不是把root代进去,我学懵了..
    回复 有任何疑惑可以回复我~ 2020-05-29 16:52:11
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信