Un tri-arbre est une sorte d'arbre ordonné, et c'est un algorithme dans lequel les caractères sont stockés dans chaque nœud et une recherche peut être effectuée en traçant les nœuds.
Créer une classe qui représente un nœud
public class Node {
private int id;
private String str;
private ArrayList<Node> child = new ArrayList<>();
public int getId() {
return this.id;
}
public String getStr() {
return this.str;
}
public ArrayList<Node> getChild(){
return this.child;
}
public void setId(int id) {
this.id = id;
}
public void setStr(String str) {
this.str = str;
}
public void setChild(Node node) {
this.child.add(node);
}
}
L'identifiant identifie le nœud et n'a pas à être séparé str est le caractère à stocker dans le nœud child est censé stocker l'enfant du nœud
L'arbre peut être construit comme suit
public class Main {
private static ArrayList<Node> nodeList = new ArrayList<>();
private static int id = 1;
public static void insert(Node parent, String word, int charIndex) {
String w = String.valueOf(word.charAt(charIndex));
//System.out.println(w);
if(charIndex == word.length()-1) { //Pour le dernier personnage
for(Node n:parent.getChild()) { //Si le dernier nœud est un nœud existant
if(n.getStr() != null&&n.getStr().equals(w)) {
return;
}
}
Node node = new Node();
node.setStr(w);
parent.setChild(node);
node.setChild(node);
node.setId(id);
id += 1;
nodeList.add(node);
return;
}
for(Node n:parent.getChild()) { //Si l'enfant contient le service actuel
if(n.getStr() != null&&n.getStr().equals(w)) {
insert(n,word,charIndex+1);
return;
}
}
Node node = new Node();
node.setStr(w);
parent.setChild(node);
node.setId(id);
id += 1;
nodeList.add(node);
if(charIndex < word.length()-1) { //Traitement récursif
insert(node, word, charIndex+1);
}
}
Je suis désolé si j'ai fait une erreur car c'était une réécriture de l'article que j'ai écrit quand je faisais un autre algorithme en concevant un petit tri-arbre (_ _)
Cette fois, j'ai eu la chance d'utiliser un tri-arbre, donc j'ai essayé de l'implémenter avec java, mais cela a pris du temps à comprendre car il utilise un traitement récursif. Après tout, je ne suis pas doué pour le traitement récursif, je veux donc l'utiliser activement pour éliminer ma faiblesse ...
Recommended Posts