Ett binärt träd är en hierarkisk datastruktur där varje nod inte har fler än två avkomlingar (barn). Vanligtvis kallas den första noden föräldernoden, och barnen kallas för vänster och höger barn. Ett binärt träd är ett ordnat riktat träd [1] .
För praktiska ändamål används vanligtvis två undertyper av binära träd - ett binärt sökträd och en binär hög .
Det finns följande rekursiva definition av ett binärt träd (se BNF ):
<binärt träd> ::= ( <data> <binärt träd> <binärt träd> ) | null .Det vill säga, ett binärt träd är antingen tomt eller består av data och två underträd (som vart och ett kan vara tomt). Ett uppenbart men viktigt faktum att förstå är att varje delträd i sin tur också är ett träd. Om en nod har båda tomma underträden, så kallas den för en lövnod (bladvertex) eller lövnod (terminal) [2] .
Till exempel, som visas till höger i fig. 1 träd enligt denna grammatik skulle kunna skrivas så här:
(m (t.ex (c (en null null) null ) (g null (k null null) ) ) (s (p (o null null) (s null null) ) (y null null) ) ) |
Varje nod i trädet definierar ett underträd som det är roten till. Noden m = (data, vänster, höger) har två barn (vänster och höger) till vänster och höger och följaktligen två underträd (vänster och höger) med rötter till vänster och höger [3] .
Många användbara datastrukturer är baserade på det binära trädet:
Träd (datastruktur) | |
---|---|
Binära träd | |
Självbalanserande binära träd |
|
B-träd | |
prefix träd |
|
Binär uppdelning av utrymme | |
Icke-binära träd |
|
Bryter upp utrymmet |
|
Andra träd |
|
Algoritmer |