老师您好,想问一下插入操作的私有方法为什么要返回根节点呢,我写了一个void方法,不知道可不可以

来源:6-2 二分搜索树基础

慕工程2252263

2019-02-16

private void add(Node root, E data){
if (root == null){
root = new Node(data);
return ;
}
if (data.compareTo(root.data) < 0){
add(root.leftChild, data);
}else if(data.compareTo(root.data) > 0){
add(root.rightChild, data);
}
}
不过目前有一个问题是当我用调用这个方法的时候,通过调试我发现我的二叉树对象的root总是为null,我不是已经判断在root为null时new一个node了吗,为什么每次添加元素后二叉树对象的root还是null呢

写回答

1回答

liuyubobobo

2019-02-16

完全是这个问题,可以参考这里:https://coding.imooc.com/learn/questiondetail/94099.html


针对你的叙述,要注意:你在这个add函数中的root变量,和类声明中的root不是一个变量!add函数中的root是传进来的函数参数,根据变量的作用域原则,会覆盖类定义中的root:)


继续加油!:)

0
3
慕工程2252263
回复
liuyubobobo
我明白了,谢谢老师!
2019-02-16
共3条回复

玩转数据结构

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

6221 学习 · 1704 问题

查看课程