Java 二叉搜索树递归加法
我正在尝试为我的BST进行递归添加。public add方法接受一个int参数,private方法接受相同的int和一个节点。这是我目前掌握的代码Java 二叉搜索树递归加法,java,recursion,binary-search-tree,Java,Recursion,Binary Search Tree,我正在尝试为我的BST进行递归添加。public add方法接受一个int参数,private方法接受相同的int和一个节点。这是我目前掌握的代码 public void add(int i) { add(i, root); } private void add(int i, Node n) { if (root==null){ root=new Node(i); } if (i < n.element) { if
public void add(int i) {
add(i, root);
}
private void add(int i, Node n) {
if (root==null){
root=new Node(i);
}
if (i < n.element) {
if (n.left != null) {
add(i, n.left);
} else {
n.left = new Node(i);
}
} else if (i > n.element) {
if (n.right != null) {
add(i, n.right);
} else {
n.right = new Node(i);
}
}
}
public void add(int i){
添加(i,根);
}
专用void add(int i,节点n){
if(root==null){
根=新节点(i);
}
if(in元素){
如果(n.right!=null){
加(i,n.右);
}否则{
n、 右=新节点(i);
}
}
}
我不断地得到空指针,也尝试过调试,但我的逻辑中有一些我看不到的缺陷。当树为空(root=null)时,您可以正确地创建一个新节点并将其分配给root
变量。但这就是它应该做的一切。因此:
if (root==null){
root=new Node(i);
return; // DONE!!
}
或者,如果您愿意:
if (root==null){
root=new Node(i);
}
else if (i < n.element) {
....
if(root==null){
根=新节点(i);
}
else if(i
在你的add
方法中,你引用了root
,而它应该是参数n
而不是后退一步,这可能是你认为它做了把戏的方式,doe我使用的打印方法也是错误的,所以我不确定是哪个做了把戏,但我为你感到骄傲!