Heim >Backend-Entwicklung >Golang >Golang implementiert die Vorbestellungsdurchquerung

Golang implementiert die Vorbestellungsdurchquerung

王林
王林Original
2023-05-10 12:04:07531Durchsuche

Vorbestellungsdurchquerung ist eine Art Binärbaumdurchquerung. Die Durchquerungsreihenfolge besteht darin, zuerst den Wurzelknoten, dann den linken Teilbaum und schließlich den rechten Teilbaum zu durchqueren. In Golang können rekursive Algorithmen verwendet werden, um die Durchquerung vor der Bestellung zu implementieren.

Zuerst müssen wir die Struktur des Binärbaumknotens definieren, einschließlich des Knotenwerts, des linken Teilbaums und des rechten Teilbaumzeigers.

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

Als nächstes können wir eine rekursive FunktionPreOrder definieren, um eine Vorbestellungsdurchquerung durchzuführen.

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
}

In der Funktion bestimmen wir zunächst, ob der Wurzelknoten leer ist, und wenn er leer ist, geben wir ein leeres Slice zurück.

Ansonsten addieren wir zunächst den Wert des Wurzelknotens zum Ergebnis, rufen dann rekursiv den linken Teilbaum und den rechten Teilbaum auf und führen sie zum Ergebnis zusammen.

Das zurückgegebene Ergebnis ist schließlich das Ergebnis der Vorbestellungsdurchquerung.

Nachfolgend finden Sie einen vollständigen Beispielcode.

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)
}

Das Ausgabeergebnis ist: [1 2 4 5 3 6 7], was das Ergebnis der Vorbestellungsdurchquerung des Binärbaums ist.

Durch den rekursiven Algorithmus ist es sehr einfach, die Binärbaum-Vorbestellungsdurchquerung in Golang zu implementieren, und es sind nur wenige Codezeilen erforderlich.

Das obige ist der detaillierte Inhalt vonGolang implementiert die Vorbestellungsdurchquerung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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