Boom (datastructuur)

datastructuur die gegevens ordent in een acyclische, gerichte graaf
(Doorverwezen vanaf Tree)

Een boom of boomstructuur is een datastructuur in de informatica die een bijzonder geval van een graaf is. Een boom bestaat uit een knoop(punt) of vertex die de stam (ook wel wortel) genoemd wordt en die het ingangspunt is voor de in de boom opgeslagen informatie. In deze wortelknoop zitten nul of meer pointers die naar andere knooppunten verwijzen. Ieder knooppunt behalve de wortel heeft precies een ouder en nul of meer kinderen. Verwijzingen gaan dus nooit tussen de kinderen onderling maar alleen van ouder naar kind; in een wat uitgebreidere versie eventueel ook van kind naar ouder (bidirectionele graaf). In een boom bestaan geen cirkelpaden en is er altijd precies 1 pad van de wortel naar een willekeurige knoop. Een knoop die zelf geen kinderen heeft noemt men een blad.

Binaire boom

bewerken
 
Een voorbeeld van een ongeordende binaire boom

Een binaire of dichotome boom is een boomstructuur waarbij iedere knoop maximaal twee kinderen heeft. Een complete binaire boom is een boomstructuur waarbij al zijn niveaus behalve eventueel de laatste volledig gevuld zijn en alle knopen op het laatste niveau aan de linkerzijde zijn. Iedere boom kan op vrij eenvoudige wijze in een binaire boom worden getransformeerd. Ook voor iedere graaf die geen niet-verbonden vertices heeft kan een boom worden gemaakt. Een geordende boom is een boomstructuur waarbij de kinderen een gedefinieerde volgorde hebben.

Algoritmen

bewerken

Voor boomstructuren bestaat een groot aantal goed bekende algoritmen, bijvoorbeeld om iets in een geordende boom op te zoeken, om een nieuw element in een geordende boom aan te brengen of te verwijderen, of om een niet-geordende boom te sorteren (om te zetten in een geordende boom). Als een boom specifieke eigenschappen heeft, kunnen deze algoritmen vaak nog verfijnd (en dus meestal ook versneld) worden. Bomen kunnen gebruikt worden om allerlei problemen in de informatica voor te stellen.

Zie ook

bewerken
Zie de categorie Tree structures van Wikimedia Commons voor mediabestanden over dit onderwerp.