Java-Implementierung von Tri-Tree

Java-Implementierung von Tri-Tree

Was ist ein Versuchsbaum?

Untitled Diagram.png

Ein Tri-Tree ist eine Art geordneter Baum, und es ist ein Algorithmus, bei dem Zeichen in jedem Knoten gespeichert werden und eine Suche durch Verfolgen der Knoten durchgeführt werden kann.

Schreiben Sie in Java

Erstellen Sie eine Klasse, die einen Knoten darstellt

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);
	}
}

Die ID identifiziert den Knoten und muss nicht separat sein str ist das Zeichen, das im Knoten gespeichert werden soll Kind soll das Kind des Knotens speichern

Der Baum kann wie folgt gebaut werden

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) { //Für das letzte Zeichen
			for(Node n:parent.getChild()) { //Wenn der letzte Knoten ein vorhandener Knoten ist
				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()) { //Wenn das Kind die aktuelle Station enthält
			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) { //Rekursive Verarbeitung
		     insert(node, word, charIndex+1);
		}
	}

Es tut mir leid, wenn ich einen Fehler gemacht habe, weil es eine Neufassung des Artikels war, den ich geschrieben habe, als ich einen anderen Algorithmus durch Entwickeln eines kleinen Tri-Tree (_ _) erstellt habe.

Zusammenfassung

Dieses Mal hatte ich die Möglichkeit, einen Tri-Tree zu verwenden, also habe ich versucht, ihn mit Java zu implementieren, aber es hat lange gedauert, ihn zu verstehen, da er rekursive Verarbeitung verwendet. Schließlich bin ich nicht gut in rekursiver Verarbeitung, deshalb möchte ich sie aktiv nutzen, um meine Schwäche zu beseitigen ...

Recommended Posts

Java-Implementierung von Tri-Tree
Implementierung einer ähnlichen Funktion in Java
Interpreter-Implementierung durch Java
Boyer-Moore-Implementierung in Java
Implementierung der Heap-Sortierung (in Java)
[Java] Implementierung des Faistel-Netzwerks
Implementierung von HashMap mit Kotlin
Implementierung der asynchronen Verarbeitung in Tomcat
Liste der in Java 9 hinzugefügten Typen
Holen Sie sich das Ergebnis von POST in Java
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Partisierung in Java
Implementierung einer mandantenfähigen kompatiblen asynchronen Verarbeitung in Tomcat
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
Änderungen in Java 11
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
Janken in Java
Mechanismus und Merkmale der in Java häufig verwendeten Collection-Implementierungsklasse
Die Geschichte des Schreibens von Java in Emacs
Umfangsrate in Java
[Java] Übersicht über Java
Rolle von JSP in Webanwendungen [Java]
FizzBuzz in Java
Diskriminierung von Enum in Java 7 und höher
Dies und das der Implementierung der zeitlichen Beurteilung von Daten in Java
Vergleich der Thread-Implementierungsmethoden in Java und der Lambda-Ausdrucksmethode
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Behandlung von Java Beans in der Methodenkette
Die Geschichte eines gewöhnlichen Othello in Java
Über die Idee anonymer Klassen in Java
Implementierung der Zifferngruppierung in der Furima App
Die Geschichte des Lernens von Java in der ersten Programmierung
Messen Sie die Größe eines Ordners mit Java
[Java] Verwendung von final in der lokalen Variablendeklaration
Spüren Sie den Lauf der Zeit auch in Java
[Rails] Implementierung von "Benachrichtigung auf irgendeine Weise benachrichtigen"
Methodenname der Methodenkette in Java Builder + α
Importieren Sie Dateien derselben Hierarchie in Java
Abgelaufene Java-Sammlung
Voraussichtliche Funktionen von Java
Machen Sie einen Blackjack mit Java
Janken App in Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
"Hallo Welt" in Java
Überprüfen Sie die Implementierung von Java toString ()
Aufrufbare Schnittstelle in Java
NIO.2 Überprüfung von Java
Kommentare in der Java-Quelle
Azure funktioniert in Java