Wie können Sie eine Liste von Pfadzeichenfolgen effizient in eine baumartige Struktur umwandeln?

Susan Sarandon
Freigeben: 2024-10-29 02:00:02
Original
308 Leute haben es durchsucht

How Can You Efficiently Convert a List of Path Strings into a Tree-like Structure?

Erstellen einer baumartigen Struktur aus Pfadzeichenfolgen

Das Konvertieren einer Reihe von Zeichenkettenpfaden in eine baumartige Struktur kann eine Herausforderung sein, insbesondere beim Umgang mit rekursiven Daten. Hier ist eine effiziente Lösung für das Problem:

Das angegebene Pfadarray besteht aus Zeichenfolgen, die den Pfad zu Knoten in einem Baum darstellen. Die gewünschte Ausgabe ist eine hierarchische Baumstruktur mit Knoten und ihren untergeordneten Knoten.

Erstens untersuchen wir den bereitgestellten Code:

<code class="go">func appendChild(root Node, children []string) Node {
   if len(children) == 1 {
      return Node{children[0], nil}
   } else {
      t := root
      t.Name=children[0]
      t.Children = append(t.Children, appendChild(root, children[1:]))
      return t
   }
}</code>
Nach dem Login kopieren

Dieser Code versucht, den Baum rekursiv zu erstellen, sofern er welche hat Probleme:

  • Es wird davon ausgegangen, dass der Eingabeknoten immer der Wurzelknoten ist.
  • Es wird nicht geprüft, ob bereits ein Knoten vorhanden ist, bevor ein Duplikat erstellt wird.
  • Es aktualisiert den Eingabeknoten, was zu einer falschen Baumstruktur führt.

Um diese Probleme zu beheben, finden Sie hier ein überarbeitetes Codebeispiel:

<code class="go">func AddToTree(root []Node, names []string) []Node {
    if len(names) > 0 {
        var i int
        for i = 0; i < len(root); i++ {
            if root[i].Name == names[0] { //already in tree
                break
            }
        }
        if i == len(root) {
            root = append(root, Node{Name: names[0]})
        }
        root[i].Children = AddToTree(root[i].Children, names[1:])
    }
    return root
}</code>
Nach dem Login kopieren

Dieser Code arbeitet mit einer Liste von Knoten. und nicht die untergeordneten Elemente eines einzelnen Knotens. Es prüft vor dem Einfügen, ob ein Knoten bereits vorhanden ist, und erstellt neue Knoten, anstatt den Eingabeknoten wiederzuverwenden. Darüber hinaus behandelt es den Fall, dass der angegebene Pfad nicht am selben Stammknoten beginnt, indem es bei Bedarf an die Liste der Stammknoten angehängt wird.

Beispielausgabe:

[{
    "name": "a",
    "children": [{
        "name": "b",
        "children": [{
            "name": "c"
        }, {
            "name": "g"
        }]
    }, {
        "name": "d"
    }]
}]
Nach dem Login kopieren

Dies wurde verbessert Die Lösung bietet eine effiziente und genaue Konvertierung von Pfadzeichenfolgen in eine hierarchische Baumstruktur.

Das obige ist der detaillierte Inhalt vonWie können Sie eine Liste von Pfadzeichenfolgen effizient in eine baumartige Struktur umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!