值传递问题?

来源:6-4 改进添加操作:深入理解递归终止条件

Mrxxm

2020-09-15

添加方法一:

public void add(E e) {
    if (root == null) {
        root = new Node(e);
        size++;
    } else {
        add(root, e);
    }
}

添加方法二:

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

对比:

为什么一个不需要赋值,一个需要赋值;
方法一:add(root, e);
方法二:root = add(root, e);
写回答

1回答

liuyubobobo

2020-09-16

抱歉,没理解你的问题。


你的这两个代码都是错误的,都无发做到把 e 添加到二分搜索树中。


代码 1 只有在 root 为空的时候可以让 root 指向一个新节点,否则无穷递归;

代码 2 直接无穷递归。

0
4
liuyubobobo
回复
Mrxxm
方法 1 的 add 不需要返回值,因为添加操作直接在 node.left 或者 node.right 上完成了。方法 2 必须有返回值,可以参考这里:http://coding.imooc.com/learn/questiondetail/94099.html
2020-09-16
共4条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程