Breitensuche-Algorithmus in TreeView, sauber programmiert?

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Artentus.

    Breitensuche-Algorithmus in TreeView, sauber programmiert?

    Hallo,

    das ist der erste Algorithmus, den ich umgesetzt habe, um einen TreeView zu durchsuchen (mal abgesehen davon, dass es solche Algorithmen genug als fertigen Quellcode gibt, ich möchte sie selber umsetzen, um daraus zu lernen).

    Der Tree sieht folgendermaßen aus:

    VB.NET-Quellcode

    1. Dim tn As New TreeNode
    2. With tn.Nodes.Add("A: Level 0, Node 0")
    3. With .Nodes.Add("B: Level 1, Node 0")
    4. .Nodes.Add("D: Level 2, Node 0")
    5. .Nodes.Add("E: Level 2, Node 1")
    6. End With
    7. With .Nodes.Add("C: Level 1, Node 1")
    8. .Nodes.Add("F: Level 2, Node 2")
    9. .Nodes.Add("G: Level 2, Node 3")
    10. End With
    11. End With
    12. Breadth_First_Search(tn)


    und der Algorithmus:

    VB.NET-Quellcode

    1. Private Sub Breadth_First_Search(ByVal n As TreeNode)
    2. Dim frontier As New Queue(Of TreeNodeCollection) 'FIFO-Warteschlange
    3. frontier.Enqueue(n.Nodes)
    4. Do While frontier.Count <> 0
    5. For Each Node As TreeNode In frontier.Dequeue
    6. ' Goal-Test (Node)
    7. frontier.Enqueue(Node.Nodes)
    8. Next
    9. Loop
    10. End Sub


    wobei anstelle von "Goal-Test" überprüft wird, ob "Node" ein Zielergebnis ist.
    Beim Testen funktioniert der Algorithmus einwandfrei. Es werden nacheinander die Knoten A, B, C, D, E, F, G aufgerufen. Nun die Frage, ob das auch sauber programmiert ist und den Speicher und CPU nicht unnötig belastet (also nicht unnötiger, als es eine Breitensuche sowieso schon tut)?

    Wäre dankbar für Antworten,

    Grüße,

    Thilo