java递归二叉搜索树插入
<>这是我的第一个java程序,但是我已经C++做了几年了。我写了我认为应该有效的东西,但事实上它不起作用。所以我有一个规定,必须为这个调用编写一个方法:tree.insertNode(value);
其中value是int。 出于显而易见的原因,我想递归地编写它,所以我不得不做一些变通:
public void insertNode(int key) {
Node temp = new Node(key);
if(root == null) root = temp;
else insertNode(temp);
}
public void insertNode(Node temp) {
if(root == null)
root = temp;
else if(temp.getKey() <= root.getKey())
insertNode(root.getLeft());
else insertNode(root.getRight());
}
谢谢你的建议
# 1 楼答案
你应该看看这篇文章。它有助于实现树结构和搜索、插入方法: http://quiz.geeksforgeeks.org/binary-search-tree-set-1-search-and-insertion/
# 2 楼答案
但是当你
insertNode
的时候,temp在哪里呢??在当前实现中,如果root不为null,temp将丢失我想你想要的是
及
即,将新节点(temp)插入左侧或右侧子树
# 3 楼答案
您可以使用标准的
Integer
(原语int的包装器)对象,而不是创建新的对象类型Node
。在最新的java Integer上,支持/int自动装箱。因此,您的方法insertNode(int key)
也可以接受Integer
参数(确保它不是null)编辑:请忽略以上评论。我不明白你真正的问题。你必须超载
insertNode()
。我认为你是对的# 4 楼答案
Sameer Sukumaran
# 5 楼答案
代码看起来有点与重载函数混淆。假设成员变量“left”和“right”分别是BSTree的左子级和右子级,可以尝试以下方式实现它: