老师您好,在改进代码的add操作时,为什么我这么写root还是等于null
来源:6-4 改进添加操作:深入理解递归终止条件
凌子祺
2020-05-29
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 的指向一直没有被修改。
继续加油!:)
012020-05-29
相似问题