Daniel Thoma: rekursive Baumstruktur

Beitrag lesen

Hallo Christoph,

Ich habe eine Tabelle die so aussieht:

ID     Parent ID      Name
1          0         Lollo
2          1         Heinz
3          1         Klaus
4          1         Thomas
5          3         Anja

Was Du brauchst, ist also eine Methode, die einem Knoten alle
Kinderknoten anhängt und sie rekursiv selbst aufruft.

Ein Knoten wäre so etwas:

class Node {

//Konstruktor
  Node(Integer id, String name, List<Node> childs);

//Eigenschaften des Objekts
  Integer id;
  String name;
  List<Node> childs;

}

Die Tabelle hat eine Methode, um alle Kinder eines Knotens zu bekommen (ich nenne sie hier mal getRows(Integer id)) sowie folgende Methoden um den Baum zu erzeugen:

List<Node> getTree(Integer id) {
  List<Node> childs = new List<Node>();
  foreach(Row row: getRows(id)) {
     childs.add(new Node(row.id, row.name, getTree(row.id)));
  }
  return childs;
}

Node getTree() {
  return new Node(0, "ROOT", getChilds(0));
}

Das ist kein lauffähiges Java, aber wie man rekursiv einen Baum aus einer flachen Struktur erzeugt, dürfte ganz gut erkennbar sein.

Grüße

Daniel