递归 BST 插入不设置根 Java
Recursive BST Insert Not Setting Root Java
根始终为空。
这不是作业,只是想扩展我的知识。我正在尝试以递归方式将节点插入到二叉树中。我在这里进行了一些搜索,但每个实施方式都非常不同,这些更改不起作用。
这是我的二叉树class:
public class BinaryTree {
static Node root;
public static void insertNode(int data){
if(root != null){
root.printData();
insertNew(root, new Node(data));
}else{
root = insertNew(root, new Node(data));
}
}
private static Node insertNew(Node current, Node n){
if(current == null){
return n;
}else if(current.data > n.data){
current.left = insertNew(current.left, n);
return current;
}else if(current.data < n.data){
current.right = insertNew(current.right, n);
return current;
}
return current;
}
public static void main(String[] args){
insertNode(9);
}
}
这是我的节点:
class Node {
int data;
Node left;
Node right;
Node(int data){
this.data = data;
}
public int printData(){
System.out.println(this.data);
return this.data;
}
}
每次我运行这个,它都假设根是空的。我的工作代码中有调试打印行,因此我可以知道我在方法中的位置。它每次都会在 insertNew()
函数中命中第一个 if
。
我想从概念上理解我失败的地方。
可能您不知道每次 运行 您的程序都会从头开始初始化 RAM 中的所有数据?
在另一种情况下,您的错误可能是您认为 root.data 将在首次插入后打印。你应该至少做 2 次插入,让你的代码打印一些东西,因为在第一次插入时根总是空的。
如果尝试调试,您可以轻松找出问题所在:
根始终为空。
这不是作业,只是想扩展我的知识。我正在尝试以递归方式将节点插入到二叉树中。我在这里进行了一些搜索,但每个实施方式都非常不同,这些更改不起作用。
这是我的二叉树class:
public class BinaryTree {
static Node root;
public static void insertNode(int data){
if(root != null){
root.printData();
insertNew(root, new Node(data));
}else{
root = insertNew(root, new Node(data));
}
}
private static Node insertNew(Node current, Node n){
if(current == null){
return n;
}else if(current.data > n.data){
current.left = insertNew(current.left, n);
return current;
}else if(current.data < n.data){
current.right = insertNew(current.right, n);
return current;
}
return current;
}
public static void main(String[] args){
insertNode(9);
}
}
这是我的节点:
class Node {
int data;
Node left;
Node right;
Node(int data){
this.data = data;
}
public int printData(){
System.out.println(this.data);
return this.data;
}
}
每次我运行这个,它都假设根是空的。我的工作代码中有调试打印行,因此我可以知道我在方法中的位置。它每次都会在 insertNew()
函数中命中第一个 if
。
我想从概念上理解我失败的地方。
可能您不知道每次 运行 您的程序都会从头开始初始化 RAM 中的所有数据? 在另一种情况下,您的错误可能是您认为 root.data 将在首次插入后打印。你应该至少做 2 次插入,让你的代码打印一些东西,因为在第一次插入时根总是空的。
如果尝试调试,您可以轻松找出问题所在: