Strom je orientovaný graf, který neobsahuje cykly, přičemž do každého vrcholu vstupuje maximálně jedna hrana. Z analogie z rodinné generační hierarchie je zvykem označovat vrchol na vyšší úrovni rodičem a vrcholy, které z něj bezprostředně vycházejí jako potomky (následníky) .
Kořen ... vrchol, do kterého žádná hrana nevstupuje.
List ... vrchol, ze kterého žádná hrana nevystupuje.
Je zvykem zobrazovat stromy kořenem vzhůru s orientací dolů směrem k listům.
Důležitou vlastností stromů je, že každý jeho vrchol může být pokládán za kořen dalšího stromu. Vrcholy mohou být ohodnoceny. Protože do každého vrcholu vstupuje maximálně jedna hrana (žádná pouze do kořene stromu), není třeba hrany hodnotit zvlášť, nýbrž hodnocení hran může být součástí hodnocení vrcholu.
Při implementaci stačí popisovat vrcholy. Obecný strom si lze představit jako rekurzivní řadu vzájemně vázaných jednoúrovňových stromů. Protože každý kořen jednoúrovňového stromu má maximálně jednoho rodiče a řadu potomků, lze uvažovat pouze jediného potomka a všechny další potomky prohlásit za mladší bratry tohoto potomka. Řada rodič - nejstarší syn -mladší bratr - ještě mladší bratr - atd. je jednoduchým lineárním seznamem s hlavou, kterou představuje rodič a členy, které jsou potomky daného rodiče.
Př. Deklarace pro obecný strom
Type
uziv = string[20]; { libovolný typ}
ustrom =^strom;
strom = record
rodic: ustrom;
ml_bratr: ustrom;
st_bratr: ustrom;
nejst_syn:ustrom;
obsah: uziv;
end;
V praxi může být datová struktura obecný strom použita v genealogii:
v organizaci
v biologii:
nebo ve strojírenství: