Ich habe Baum, wo alle Blätter Index haben, wenn Baum rekursiv in der Datenbank lodded ist, wird Datenbank Baum nach Indizes bestellen. Zuerst werden die Wurzelknoten nach Index sortiert und so weiter. Jetzt muss ich eine Aktion implementieren, wie der Benutzer diese Indizes sortieren kann, indem er die Pfeilsymbole nach oben/unten drückt. Wenn der Benutzer die Taste drückt, sollte der Index den Index nehmen, der sich unter seinem eigenen Index befindet, und wenn der Pfeil nach oben gedrückt wird, sollte es umgekehrt laufen. Ich weiß einfach nicht, was der beste Weg wäre, um diese Art von Funktionalität zu implementieren.Reihenfolge des rekursiven Baumindex?
0
A
Antwort
1
Da Ihre Frage ein wenig vage ist, geht diese Antwort davon aus, dass Sie wissen, was Sie tun, wenn es um die Datenbank geht (ich würde den Ruhezustand für Java empfehlen, wenn nicht) und der folgende Code soll Ihnen ein paar Ideen geben Implementierung Ihrer Lösung
//If I have understood your question, you want two nodes to swap position in the tree structure
public static swapNode(Node parent, Node child)
{
Long superId = parent.getParentId();
child.parentId(superId);
parent.setParentId(child.getId());
child.setId(parentId);
//update children lists of parent and child
//update parent ids of children lists
//save changes to database
}
//create tree structure from database. Assumes nodes have been loaded from a database
//table where each row represents a node with a parent id column the root node which has parent id null)
//invoke this with all nodes and null for parentId argument
public static List<Node> createNodeTree(List<Node> allNodes, Long parentId)
{
List<Node> treeList = new ArrayList<Node>();
for(Node node : nodes)
{
if(parentIdMatches(node, parentId))
{
node.setChildren(createNodeTree(allNodes, node.getId()));
treeList.add(node);
}
}
return treeList;
}
private static boolean parentIdMatches(Node node, Long parentId)
{
return (parentId != null && parentId.equals(node.getParentId()))
|| (parentId == null && node.getParentId() == null);
}
//The objects loaded from the database should implement this interface
public interface Node
{
void setParentId(Long id);
Long getParentId();
Long getId();
List<Node> getChildren();
void setChildren(List<Node> nodes);
}
Verwandte Themen
- 1. Raumkomplexität des rekursiven Algorithmus
- 2. InnoDB B + Baumindex - doppelte Werte
- 3. SQL - Reihenfolge der Ergebnisse einer rekursiven Beziehung
- 4. Komplexität des rekursiven faktoriellen Programms
- 5. Reihenfolge Hierarchie aus rekursiven Abfrageergebnissen in SQL 2005
- 6. Reihenfolge des regulären Ausdrucksoperators (.. | .. ... .. | ..)
- 7. Reihenfolge des Konstruktors und des Kopierkonstruktors
- 8. Reihenfolge der Auswertung des Vergleichsoperators?
- 9. Wie die Reihenfolge des SortedSet
- 10. Reihenfolge und Aufruf des Destruktors
- 11. Reihenfolge des Betriebs mit Rohrleitungen
- 12. Reihenfolge Faktor Ebenen in der Reihenfolge des Auftretens in Datensatz
- 13. Wie man Segfault wegen des rekursiven Algorithmus repariert
- 14. Erweiterte Kontrolle des rekursiven Parsers in der Skala
- 15. Komplexität faktorieller rekursiven Algorithmus
- 16. Templat rekursiven Datentypen
- 17. OpenMP Parallelisierung auf einer rekursiven Funktion
- 18. Vermeiden Sie stackoverflow im rekursiven Algorithmus in rekursiven Abstieg Parser
- 19. Ausgabe des Wörterbuchs in alphabetischer Reihenfolge zurückgeben
- 20. Reihenfolge des Symfony-Formulars CollectionType-Feld
- 21. Modulo in der Reihenfolge des Betriebs
- 22. Wie Lade Reihenfolge des Skripts in RequireJS
- 23. Funktioniert die Reihenfolge des Schemas in Node.JS?
- 24. Reihenfolge des Wachstums der folgenden Funktionen
- 25. Erzwingen die Reihenfolge des Einsatzes in gradle
- 26. Reihenfolge des Index für mehrere Spalten
- 27. Durchqueren eines XML mithilfe der rekursiven Funktion
- 28. NullPointerExceprion bei rekursiven Methode
- 29. Python rekursiven Ordner lesen
- 30. Iterativ rekursiven Code schreiben
Haben alle Knoten einen Index oder nur Blätter? Wie werden Indizes generiert? –
Alle Knoten haben Indizes, alle Knoten befinden sich in derselben Datenbanktabelle. Der Index wird als höchster Index aller Indizes als "taubult" erstellt. – newbie