Je suis nouveau à Java et j'ai essayé d'implémenter un BST mais le programme ne sort que la dernière valeur insérée. Est-ce que je me trompe en ce qui concerne ce que mon root_node
montre? Voici mes codes sources pour Tree.java
et Node.java
.Sortie incorrecte: Implémentation de l'arbre de recherche binaire en utilisant 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); }
}
L'erreur est que mon code source affiche uniquement le dernier pas inséré. ce qui est de 25 dans ce cas.
Merci - bonne réponse! Ce que j'ai fait était de rendre public left_node et right_node et d'utiliser l'initialisation au lieu de le définir par une méthode dans la boucle if. @janos –