【发布时间】:2020-09-29 04:03:51
【问题描述】:
我创建了这个二叉搜索树。我使用循环和递归以两种形式编写了插入方法。递归代码虽然看起来正确但不起作用,我无法弄清楚问题是什么。当我使用 insertRecursion 方法创建树时,leftChild 和 rightChild 始终为空。
public class BinarySearchTree {
private class Node{
private int value;
private Node leftChild;
private Node rightChild;
public Node(int value){
this.value=value;
}
public String toString(){
return ""+this.value;
}
}
private Node root;
public BinarySearchTree(int value){
root=new Node(value);
}
public void insertRecursion(int value){
Node current=root;
insertRecursionForm(current,value);
}
private Node insertRecursionForm(Node root, int value){
if(root==null){
root=new Node(value);
return root;
}
if(value<root.value){
return insertRecursionForm(root.leftChild,value);
}else{
return insertRecursionForm(root.rightChild,value);
}
}
public void insert(int value){
Node current=root;
while(true) {
if (value < current.value) {
if (current.leftChild == null) {
current.leftChild= new Node(value);
break;
}else{
current=current.leftChild;
}
}else if(value>current.value) {
if (current.rightChild == null) {
current.rightChild= new Node(value);
break;
}else{
current=current.rightChild;
}
}
}
}
}
【问题讨论】:
-
您不需要单独的
Node类。树的每个节点都是一个BInarySearchTree。试一试,一切都会变得清晰。
标签: java recursion binary-search-tree