Maison > développement back-end > Golang > le corps du texte

Comment puis-je convertir un tableau de chaînes de chemins en une structure arborescente ?

Patricia Arquette
Libérer: 2024-10-27 04:42:29
original
365 Les gens l'ont consulté

How can I convert a path string array into a tree-like structure?

Transformation d'un tableau de chaînes de chemins en une structure arborescente

Introduction :

Construction d'une structure arborescente à partir de un tableau de chaînes de chemin peut être difficile, mais avec les techniques appropriées, cela peut être réalisé efficacement.

Solution :

La solution fournie utilise une fonction récursive, AddToTree , qui prend en entrée une liste de nœuds représentant l'état actuel de l'arborescence et les segments de chemin restants à ajouter. L'algorithme procède comme suit :

  1. Vérifiez si le segment du chemin actuel (premier élément du chemin) existe déjà en tant que nœud enfant de la racine actuelle.
  2. S'il n'est pas trouvé, créez un nouveau nœud avec le segment de chemin actuel comme nom et ajoutez-le en tant qu'enfant de la racine actuelle.
  3. Appelez récursivement AddToTree sur les segments de chemin restants, en utilisant le nœud enfant nouvellement créé comme nouvelle racine.

Extrait de code :

<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>
Copier après la connexion

Avantages de la solution :

  • Réutilisabilité : La fonction peut être appliquée à plusieurs reprises pour ajouter plusieurs chaînes de chemin à l'arborescence.
  • Intégrité : Elle évite les nœuds en double dans l'arborescence en vérifiant les nœuds existants avant de les ajouter.
  • Efficacité : La récursion garantit que la fonction ne fonctionne que sur les nœuds nécessaires dans l'arborescence.

Exemple de sortie :

Le le code génère le résultat suivant :

[{
    "name": "a",
    "children": [{
        "name": "b",
        "children": [{
            "name": "c"
        }, {
            "name": "g"
        }]
    }, {
        "name": "d"
    }]
}]
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!