Ich habe eine Ternary Suche Baum (Trie) und ich möchte alle Wörter darin ausdrucken.Wie drucke ich alle Wörter in einem Trie aus?
Wie gehe ich über diese aktuelle Implementierung, die ich unten habe? Ich habe eine Standard put
Methode, um neue Wörter zum Baum hinzuzufügen. Ich habe versucht, die Wörter mit einer In-Order-Traversierung zu drucken, aber ich bin mir nicht sicher, wie genau ich die Funktion vervollständige.
class TST {
private Node root;
public void put(String key, int value) {
root = put(root, key, value, 0);
}
private Node put(Node node, String key, int value, int index) {
char c = key.charAt(index);
if(node == null){
node = new Node(c);
}
if(c < node.character){
node.left = put(node.left, key, value, index);
}else if(c > node.character){
node.right = put(node.right, key, value, index);
}else if(index < key.length()-1){
node.middle = put(node.middle, key, value, index+1);
}else{
node.value = value;
}
return node;
}
public Integer get(String key) {
Node node = get(root, key, 0);
if (node == null) {
return null;
}
return node.value;
}
public Node get(Node node, String key, int index) {
if(node == null) {
return null;
}
char c = key.charAt(index);
if (c < node.character) {
return get(node.left, key, index);
} else if (c > node.character) {
return get(node.right, key, index);
} else if(index < key.length() -1) {
return get(node.middle, key, index);
} else {
return node;
}
}
public void inorderTraversal(Node node) {
System.out.print(node.character + ":" + node.value + " ");
if(node.left != null) {
inorderTraversal(node.left);
}
if(node.middle != null) {
inorderTraversal(node.middle);
}
if(node.right != null) {
inorderTraversal(node.right);
}
}
public void traverse() {
inorderTraversal(root);
}
}
public class Main {
public static void main(String[] args) {
TST tst = new TST();
tst.put("This",3);
tst.put("There",4);
tst.put("Them",5);
tst.put("High",6);
System.out.println(tst.get("T"));
tst.traverse();
}
}
class Node {
public char character;
public Node left, right, middle;
public int value;
public Node(char character) {
this.character = character;
}
}
Willkommen auf SO, ich hoffe, du hast die kleine [Tour] von SO schon genommen. Was ist das Problem genau? Siehe [ask] – AxelH
Danke :), ich möchte nur alle Wörter ausdrucken können, die im Baum gespeichert sind Ich kann die Knoten gut ausdrucken, aber nicht die Wörter. Es sollte eine ziemlich häufige Interviewfrage sein, aber ich kann nicht herausfinden, wie es geht. –
Okay, ich habe die Knoten - und Hauptklasse hier hinzugefügt. Ich gebe in Worte zu der Struktur ein. Jedes der Zeichen dieser Wörter erhält einen Knoten und einen Wert. Ich kann alle Zeichen ausdrucken, aber was ich will, ist das auszudrucken Wörter, die im Baum sind. Heres eine Visualisierung für treis https://www.cs.usfca.edu/~galles/visualization/TST.html –