[C#] Tiefe eines Elementes in einem Baum ermitteln

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Antworten
Tejio
Establishment
Beiträge: 107
Registriert: 11.11.2010, 11:33

[C#] Tiefe eines Elementes in einem Baum ermitteln

Beitrag von Tejio »

Hallo alle zusammen,

Wie im Betreff bereits erwähnt, geht es mir um die Tiefe eines Elementes in einem Baum.

In einer fiktiven Tabelle Lizenz werden eine Objekt-ID und eine Parent-ID gespeichert. Die Parent-ID verweist auf eine Object-ID.

Meine Tabelle enthält:
  • 1, null, Linux
    2, null, Windows
    3, 1, Linux Debian
    4, 2, Windows Server
    5, 1, Linux knoppix
    6, 3, Linux Ubuntu
    7, null Mac OS x
    8, 4, Windows SharePoint
wenn ich nun die tiefe von SharePoint berechnen würde, dann würde ich als Ergebnis eine Tiefe von 3 erwarten, wenn man davon ausgeht, dass die Hauptelemente mit 1 beginnen. Habt ihr vielleicht eine Idee wie man die Tiefe in diesem fall am besten berechnet?

Gruß,
Tejio


PS: mir ist es ein Rätsel, wie manche Leute lange texte mit dem Smartphone schreiben können. Das ist echt unangenehm...
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [C#] Tiefe eines Elementes in einem Baum ermitteln

Beitrag von Artificial Mind »

Code: Alles auswählen

var currElement = //ich nehm mal an du hast ne referenz/position auf dein gefundenes Element
int depth = 0;
while ( currElement != null ) 
{
  currElement = currElement.Parent; //oder halt die äquivalente Aktion, könnte bei dir ja irgendwie Tabelle[currElement.ParentID] oder so sein
  ++depth;
}
Tejio
Establishment
Beiträge: 107
Registriert: 11.11.2010, 11:33

Re: [C#] Tiefe eines Elementes in einem Baum ermitteln

Beitrag von Tejio »

@Articifal Mind: Danke für den Code! Ich habe den Code in eine passende Funktion, damit ich es in Zukunft nicht immer wieder programmieren muss. Letztenendes habe ich eine andere Vorgehensweise gewählt. Der Grund dafür liegt in einer geänderten Aufgabenstellung. Ich muss nicht nur die Tiefe wissen, sondern nun auch eine Sortierung der Elemente und eine Relation zwischen den Objekten aufbauen. Dazu habe ich mir einen einfachen Baum gebastelt und diesen die Arbeit machen lassen.
Antworten