我是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 –