Récursive Binaires De Recherche Arbres Insérer
Donc c'est mon premier programme en java, mais j'ai fait du c++ pour quelques années. J'ai écrit ce que je pense devrait fonctionner, mais en fait il ne l'est pas. J'ai donc eu une stipulation d'avoir à écrire une méthode pour cet appel:
tree.insertNode(value);
où la valeur est un entier (int).
Je voulais l'écrire de manière récursive, pour des raisons évidentes, j'ai eu à faire un travail autour de:
public void insertNode(int key) {
Node temp = new Node(key);
if(root == null) root = temp;
else insertNode(temp);
}
public void insertNode(Node temp) {
if(root == null)
root = temp;
else if(temp.getKey() <= root.getKey())
insertNode(root.getLeft());
else insertNode(root.getRight());
}
Merci pour tous les conseils.
Vous devez vous connecter pour publier un commentaire.
Sameer Sukumaran
Le code ressemble un peu à confusion avec les fonctions surchargées. En supposant que les variables membres de "gauche" et "droite" à la gauche de l'enfant et de droit de l'enfant de la BSTree respectivement, vous pouvez essayer de la mise en œuvre de la façon suivante:
Vous devriez jeter un oeil à cet article. Il contribue à mettre en œuvre une structure de l'arbre et de la recherche, méthodes d'insertion:
http://quiz.geeksforgeeks.org/binary-search-tree-set-1-search-and-insertion/
Vous pouvez utiliser les
Integer
(wrapper pour la primitive int) de l'objet au lieu de créer un nouveau type d'objetNode
. Sur la dernière version de java Entier/int auto-boxing est pris en charge. Par conséquent, votre méthodeinsertNode(int key)
peut prendre enInteger
argument trop (s'assurer qu'il n'est pas null).EDIT: Pls ignorer le commentaire ci-dessus. Je ne comprends pas votre question. Vous devrez surcharge
insertNode()
. Je pense que vous avez raison.mais où est temp quand vous
insertNode
?? Avec votre actuel de mise en œuvre de temp est perdu si la racine n'est pas null.Je pense que vous voulez quelque chose comme
et
c'est à dire À insérer le nouveau Nœud (temp) vers la gauche ou la droite de la sous-arborescence.