En utilisant Java, est-il possible d'écrire une méthode récursive pour trouver un élément dans un arbre de recherche binaire? Je dis non en raison de la nature de re-tracer récursif à moins que je ne l'ai pas mis en œuvre correctement? J'ai cherché sur Internet et tout ce que je peux trouver est une version itérative. Voici ma méthode:Arbre de recherche binaire implémenté en Java - Recherche élémentaire récursivement
public boolean findValueRecursively(BSTNode node, int value){
boolean isFound = false;
BSTNode currentNode = node;
if (value == currentNode.getData()){
isFound = true;
return isFound;
} else if (value < currentNode.getData()){
findValueRecursively(currentNode.getLeftNode(), value);
} else{
findValueRecursively(currentNode.getRightNode(), value);
}
return isFound;
}
// Node data structure
public class BSTNode
{
private BSTNode leftNode;
private BSTNode rightNode;
private int data;
public BSTNode(int value, BSTNode left, BSTNode right){
this.leftNode = left;
this.rightNode = right;
this.data = value;
}
}
public static void main(String[] args){
BST bst = new BST();
// initialize the root node
BSTNode bstNode = new BSTNode(4, null, null);
bst.insert(bstNode, 2);
bst.insert(bstNode, 5);
bst.insert(bstNode, 6);
bst.insert(bstNode, 1);
bst.insert(bstNode, 3);
bst.insert(bstNode, 7);
if (bst.findValueRecursively(bstNode, 7)){
System.out.println("element is found! ");
} else{
System.out.println("element is not found!");
}
}
Je reçois l'impression comme "élément n'est pas trouvé".
Toute aide/conseils ou suggestions, plus que bienvenue.
Merci d'avance!
est-il efficace lorsque nous utilisons un arbre énorme avec des milliers de noeud? –
@KamelBOUYACOUB puisque vous touchez n'importe quel nœud une fois au maximum, je dirais que oui - c'est aussi efficace que possible. Faites attention à ce que c'est fondamentalement un balayage DFS de l'arbre à partir du nœud racine et en descendant. – alfasin