我是Java的新手,我一直试图实现一个BST,但程序只输出最后插入的值。我对root_node
指向哪些方面有错吗?以下是我的源代码Tree.java
和Node.java
。错误的输出:使用Java的二进制搜索树实现
Tree.java
public class Tree {
private Node root_node;
public void Tree() {
this.root_node = null;
}
public void insertNode (int value) {
root_node = insertNode(root_node, value);
}
public Node insertNode (Node node, int insert_value) {
if (node == null) {
return (new Node(insert_value));
}
else {
if (node.getNodeValue() < insert_value)
node = insertNode(node.getLeftNode(), insert_value);
else
node = insertNode(node.getRightNode(), insert_value);
return (node);
}
}
public void printNode() {
printNode(root_node);
}
public void printNode (Node node) {
if (node != null){
System.out.print(node.getNodeValue() + " ");
printNode(node.getLeftNode());
printNode(node.getRightNode());
}
}
public static void main(String[] args) {
Tree tree = new Tree();
tree.insertNode(54);
tree.insertNode(87);
tree.insertNode(11);
tree.insertNode(25);
tree.printNode();
}
}
Node.java
public class Node {
private int node_value;
private Node left_node, right_node;
public Node(int root_value) {
this.node_value = root_value;
this.left_node = null;
this.right_node = null;
}
public int getNodeValue() { return (this.node_value); }
public Node getLeftNode() { return (this.left_node); }
public Node getRightNode() { return (this.right_node); }
}
的错误是我的源代码只显示最后插入没有。在这种情况下是25。
谢谢 - 很好的回答!我所做的是将left_node和right_node公开,并使用初始化,而不是通过if循环中的方法来设置它。 @janos –