Zum Inhalt springen

„Baum (Datenstruktur)“ – Versionsunterschied

aus AufEinWort, der freien Forschung
[ungesichtete Version][ungesichtete Version]
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 8: Zeile 8:
== <span id="Eigenschaften">Eigenschaften</span> ==
== <span id="Eigenschaften">Eigenschaften</span> ==
<p>Der Vorteil von Bäumen gegenüber linearen Strukturen wie [https://de.wikipedia.org/wiki/Feld_(Datentyp) Felder] oder [https://de.wikipedia.org/wiki/Liste_(Datenstruktur) Listen] ist der [https://de.wikipedia.org/wiki/Effizienz_(Informatik) effiziente] Zugriff. So erfolgt beispielsweise eine [https://de.wikipedia.org/wiki/Suchverfahren Suche] nur in logarithmischer Zeit gegenüber linearer Zeit bei Feldern (zu Details vergleiche Artikel [https://de.wikipedia.org/wiki/Bin%C3%A4re_Suche Binärsuche]). Der Vorteil von Bäumen als Datenstruktur gegenüber [https://de.wikipedia.org/wiki/Netzwerkstruktur Netzwerkstrukturen] ist die geringe Anzahl der [https://de.wikipedia.org/wiki/Kante_(Graphentheorie) Kanten] (Verbindungen), die gespeichert bzw. berücksichtigt werden müssen. Die Anzahl der Kanten des [https://de.wikipedia.org/wiki/Vollst%C3%A4ndiger_Graph vollständigen Graphen] 𝐾𝑛&nbsp;entspricht der [https://de.wikipedia.org/wiki/Dreieckszahl Dreieckszahl]</p>
<p>Der Vorteil von Bäumen gegenüber linearen Strukturen wie [https://de.wikipedia.org/wiki/Feld_(Datentyp) Felder] oder [https://de.wikipedia.org/wiki/Liste_(Datenstruktur) Listen] ist der [https://de.wikipedia.org/wiki/Effizienz_(Informatik) effiziente] Zugriff. So erfolgt beispielsweise eine [https://de.wikipedia.org/wiki/Suchverfahren Suche] nur in logarithmischer Zeit gegenüber linearer Zeit bei Feldern (zu Details vergleiche Artikel [https://de.wikipedia.org/wiki/Bin%C3%A4re_Suche Binärsuche]). Der Vorteil von Bäumen als Datenstruktur gegenüber [https://de.wikipedia.org/wiki/Netzwerkstruktur Netzwerkstrukturen] ist die geringe Anzahl der [https://de.wikipedia.org/wiki/Kante_(Graphentheorie) Kanten] (Verbindungen), die gespeichert bzw. berücksichtigt werden müssen. Die Anzahl der Kanten des [https://de.wikipedia.org/wiki/Vollst%C3%A4ndiger_Graph vollständigen Graphen] 𝐾𝑛&nbsp;entspricht der [https://de.wikipedia.org/wiki/Dreieckszahl Dreieckszahl]</p>
[[Datei:Anzahl der Kanten des vollständigen Graphen.png]] . Die Anzahl der Kanten in einem Baum mit der gleichen Anzahl von Knoten (Objekten) ist dagegen lediglich 𝑛 – 1.
== <span id="Terminologie">Terminologie</span> ==
<p>Allgemein werden alle denkbaren Begriffe der [https://de.wikipedia.org/wiki/Graphentheorie Graphentheorie] entlehnt. Die durch die Hierarchie vorgegebenen Objekte nennt man ''[https://de.wikipedia.org/wiki/Knoten_(Graphentheorie) Knoten]''. Typischerweise speichert jeder Knoten ausgehend von einem ersten Knoten, der ''[https://de.wikipedia.org/wiki/Wurzel_(Graphentheorie) Wurzel]'', eine Liste von Verweisen auf die ihnen untergeordneten Knoten. Diese Verweise heißen ''Kanten''. Eine ''[https://de.wikipedia.org/wiki/Kante_(Graphentheorie) Kante]'' verbindet zwei Knoten, um anzuzeigen, dass zwischen ihnen eine Beziehung besteht. Jeder Knoten außer der Wurzel ist durch genau eine eingehende Kante von einem anderen Knoten verbunden. Die Wurzel des Baums ist der einzige Knoten im Baum, der keine eingehenden Kanten hat. Jeder Knoten kann mehrere ausgehende Kanten haben.</p>[[file:220px-Baum_Begriffe.svg.png|link=https://de.wikipedia.org/wiki/Datei:Baum_Begriffe.svg|220x128px]]


[[Datei:Anzahl der Kanten des vollständigen Graphen.png]] . Die Anzahl der Kanten in einem Baum mit der gleichen Anzahl von Knoten (Objekten) ist dagegen lediglich 𝑛 – 1.
Begriffe eines Baums<p>Es ist üblich, bei den untergeordneten Knoten von ''Kindern'' und bei dem verweisenden Knoten von einem ''Elternteil'' zu sprechen. Die Menge der Knoten, die eingehende Kanten von demselben Knoten haben, werden als ''Kinder''dieses Knotens bezeichnet. Ein Knoten ist das ''Elternteil'' aller Knoten, mit denen er mit ausgehenden Kanten verbunden ist. Knoten im Baum, die Kinder desselben Elternteils sind, werden als ''Geschwister'' bezeichnet. Auch andere der [https://de.wikipedia.org/wiki/Genealogie Genealogie] entlehnten Bezeichnungen werden verwendet. Hat ein Knoten selbst keine Kinder, nennt man ihn ein ''Blatt''.</p><p>Insbesondere sind die Begriffe der [https://de.wikipedia.org/wiki/Wurzelbaum Wurzelbäume] relevant: Bei diesen Bäumen ist die Wurzel eindeutig bestimmt. Hat man eine Wurzel festgehalten, lassen sich zusätzlich zu den Begriffen, die man bei graphentheoretischen Bäumen schon hat – ''[https://de.wikipedia.org/wiki/Weg_(Graphentheorie) Abstand]'', ''[https://de.wikipedia.org/wiki/Teilgraph Teilbaum]'', ''[https://de.wikipedia.org/wiki/Grad_(Graphentheorie)#Gerichtete_Graphen Knotengrad]'', ''[https://de.wikipedia.org/wiki/Isomorphie_von_Graphen Isomorphie]'' –, noch Folgendes definieren: Die ''Tiefe'' eines Knotens gibt an, wie viele Kanten er von der Wurzel entfernt ist. Die Wurzel hat die Tiefe 0. Die Knoten mit derselben Tiefe bilden zusammen eine ''Ebene'' oder ein ''Niveau''. Die ''[https://de.wikipedia.org/wiki/H%C3%B6he_(Graphentheorie) Höhe]'' eines Baumes ist dann die maximale Tiefe eines Knotens.</p><p>Ein ''Knoten'' ist ein grundlegender Bestandteil eines Baumes. Er kann einen Namen haben, der ''Schlüssel'' genannt wird. Ein Knoten kann auch zusätzliche Informationen enthalten. Diese zusätzlichen Informationen werden ''[https://de.wikipedia.org/wiki/Nutzdaten Nutzdaten]'' genannt. Während die Nutzdateninformationen für viele Baumalgorithmen nicht von zentraler Bedeutung sind, sind sie in Anwendungen, die Bäume verwenden, häufig von entscheidender Bedeutung.</p><p>Ein ''[https://de.wikipedia.org/wiki/Pfad_(Graphentheorie) Pfad]'' ist eine geordnete [https://de.wikipedia.org/wiki/Liste_(Datenstruktur) Liste] von Knoten, die durch Kanten verbunden sind. Ein ''Teilbaum'' ist eine zusammenhängende [https://de.wikipedia.org/wiki/Menge_(Mathematik) Menge] von Knoten und Kanten, die aus einem übergeordneten Knoten und allen Nachkommen dieses übergeordneten Knotens bestehen und selbst einen Baum bildet. Die Kinder jedes Knotens sind die Wurzeln eines Teilbaums.</p>

Version vom 29. März 2024, 10:39 Uhr

Datenstruktur Baum

In der Informatik ist ein Baum (engl. tree) eine Datenstruktur und ein abstrakter Datentyp, mit dem sich hierarchische Strukturen abbilden lassen. Dadurch, dass einerseits viele kombinatorische Probleme auf Bäume zurückgeführt werden können oder (im Fall von Spannbäumen) die Ergebnisse von Graphenalgorithmen (wie der Breiten- oder Tiefensuche) sind, spielen Bäume in der Informatik eine besondere Rolle. Dabei können ausgehend von der Wurzelmehrere gleichartige Objekte miteinander verkettet werden, sodass die lineare Struktur der Liste aufgebrochen wird und eine Verzweigung stattfindet. Da Bäume zu den meist verwendeten Datenstrukturen in der Informatik gehören, gibt es viele Spezialisierungen.

Definitionen

Bäume können auf verschiedene Weise definiert werden, z. B.

  1. Ein Baum besteht aus einer Menge von Knoten und einer Menge von Kanten, die jeweils zwei Knoten verbinden. Ein bestimmter Knoten des Baums wird als Wurzel bezeichnet. Jeder Knoten mit Ausnahme der Wurzel ist durch eine Kante mit genau einem anderen Knoten verbunden, wobei dieser Knoten der Elternteil von n ist. Ein eindeutiger Pfad verläuft von der Wurzel zu jedem Knoten. Wenn jeder Knoten im Baum maximal zwei untergeordnete Knoten (Kinder) hat, wird der Baum Binärbaum genannt.
  2. Ein Baum ist entweder leer oder besteht aus einer Wurzel und 0 oder mehr Teilbäumen, von denen jeder auch ein Baum ist. Die Wurzel jedes Teilbaums ist durch eine Kante mit der Wurzel des übergeordneten Baums verbunden. Dies ist eine rekursive Definition für Bäume.[1]

Eigenschaften

Der Vorteil von Bäumen gegenüber linearen Strukturen wie Felder oder Listen ist der effiziente Zugriff. So erfolgt beispielsweise eine Suche nur in logarithmischer Zeit gegenüber linearer Zeit bei Feldern (zu Details vergleiche Artikel Binärsuche). Der Vorteil von Bäumen als Datenstruktur gegenüber Netzwerkstrukturen ist die geringe Anzahl der Kanten (Verbindungen), die gespeichert bzw. berücksichtigt werden müssen. Die Anzahl der Kanten des vollständigen Graphen 𝐾𝑛 entspricht der Dreieckszahl

. Die Anzahl der Kanten in einem Baum mit der gleichen Anzahl von Knoten (Objekten) ist dagegen lediglich 𝑛 – 1.

Terminologie

Allgemein werden alle denkbaren Begriffe der Graphentheorie entlehnt. Die durch die Hierarchie vorgegebenen Objekte nennt man Knoten. Typischerweise speichert jeder Knoten ausgehend von einem ersten Knoten, der Wurzel, eine Liste von Verweisen auf die ihnen untergeordneten Knoten. Diese Verweise heißen Kanten. Eine Kante verbindet zwei Knoten, um anzuzeigen, dass zwischen ihnen eine Beziehung besteht. Jeder Knoten außer der Wurzel ist durch genau eine eingehende Kante von einem anderen Knoten verbunden. Die Wurzel des Baums ist der einzige Knoten im Baum, der keine eingehenden Kanten hat. Jeder Knoten kann mehrere ausgehende Kanten haben.

Begriffe eines Baums

Es ist üblich, bei den untergeordneten Knoten von Kindern und bei dem verweisenden Knoten von einem Elternteil zu sprechen. Die Menge der Knoten, die eingehende Kanten von demselben Knoten haben, werden als Kinderdieses Knotens bezeichnet. Ein Knoten ist das Elternteil aller Knoten, mit denen er mit ausgehenden Kanten verbunden ist. Knoten im Baum, die Kinder desselben Elternteils sind, werden als Geschwister bezeichnet. Auch andere der Genealogie entlehnten Bezeichnungen werden verwendet. Hat ein Knoten selbst keine Kinder, nennt man ihn ein Blatt.

Insbesondere sind die Begriffe der Wurzelbäume relevant: Bei diesen Bäumen ist die Wurzel eindeutig bestimmt. Hat man eine Wurzel festgehalten, lassen sich zusätzlich zu den Begriffen, die man bei graphentheoretischen Bäumen schon hat – Abstand, Teilbaum, Knotengrad, Isomorphie –, noch Folgendes definieren: Die Tiefe eines Knotens gibt an, wie viele Kanten er von der Wurzel entfernt ist. Die Wurzel hat die Tiefe 0. Die Knoten mit derselben Tiefe bilden zusammen eine Ebene oder ein Niveau. Die Höhe eines Baumes ist dann die maximale Tiefe eines Knotens.

Ein Knoten ist ein grundlegender Bestandteil eines Baumes. Er kann einen Namen haben, der Schlüssel genannt wird. Ein Knoten kann auch zusätzliche Informationen enthalten. Diese zusätzlichen Informationen werden Nutzdaten genannt. Während die Nutzdateninformationen für viele Baumalgorithmen nicht von zentraler Bedeutung sind, sind sie in Anwendungen, die Bäume verwenden, häufig von entscheidender Bedeutung.

Ein Pfad ist eine geordnete Liste von Knoten, die durch Kanten verbunden sind. Ein Teilbaum ist eine zusammenhängende Menge von Knoten und Kanten, die aus einem übergeordneten Knoten und allen Nachkommen dieses übergeordneten Knotens bestehen und selbst einen Baum bildet. Die Kinder jedes Knotens sind die Wurzeln eines Teilbaums.