Maison > développement back-end > Golang > golang implémente la traversée des précommandes

golang implémente la traversée des précommandes

王林
Libérer: 2023-05-10 12:04:07
original
535 Les gens l'ont consulté

Le parcours de précommande est un type de parcours d'arbre binaire. L'ordre de parcours consiste à parcourir d'abord le nœud racine, puis à parcourir le sous-arbre de gauche et enfin à parcourir le sous-arbre de droite. Dans Golang, des algorithmes récursifs peuvent être utilisés pour implémenter le parcours de précommande.

Tout d'abord, nous devons définir la structure du nœud de l'arbre binaire, y compris la valeur du nœud, les pointeurs du sous-arbre gauche et du sous-arbre droit.

type Node struct {
        Value int
        Left  *Node
        Right *Node
}
Copier après la connexion

Ensuite, nous pouvons définir une fonction récursivePreOrder pour effectuer un parcours de précommande.

func PreOrder(root *Node) []int {
        if root == nil {
                return []int{}
        }
        result := make([]int, 0)
        result = append(result, root.Value)
        result = append(result, PreOrder(root.Left)...)
        result = append(result, PreOrder(root.Right)...)
        return result
}
Copier après la connexion

Dans la fonction, nous déterminons d'abord si le nœud racine est vide, et s'il est vide, renvoyons une tranche vide.

Sinon, nous ajoutons d'abord la valeur du nœud racine au résultat, puis appelons récursivement le sous-arbre gauche et le sous-arbre droit et les fusionnons dans le résultat.

Enfin, le résultat renvoyé est le résultat du parcours de précommande.

Vous trouverez ci-dessous un exemple de code complet.

package main

import "fmt"

type Node struct {
        Value int
        Left  *Node
        Right *Node
}

func PreOrder(root *Node) []int {
        if root == nil {
                return []int{}
        }
        result := make([]int, 0)
        result = append(result, root.Value)
        result = append(result, PreOrder(root.Left)...)
        result = append(result, PreOrder(root.Right)...)
        return result
}

func main() {
        root := &Node{
                Value: 1,
                Left: &Node{
                        Value: 2,
                        Left: &Node{
                                Value: 4,
                        },
                        Right: &Node{
                                Value: 5,
                        },
                },
                Right: &Node{
                        Value: 3,
                        Left: &Node{
                                Value: 6,
                        },
                        Right: &Node{
                                Value: 7,
                        },
                },
        }
        result := PreOrder(root)
        fmt.Println(result)
}
Copier après la connexion

Le résultat de sortie est : [1 2 4 5 3 6 7], qui est le résultat du parcours pré-commandé de l'arbre binaire.

Grâce à l'algorithme récursif, il est très simple d'implémenter la traversée de pré-commande d'arbre binaire dans Golang et ne nécessite que quelques lignes de code pour être complété.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal