ADT BTrees(T) ISEin Binärbaum ist kein Baum! Die wesentlichen Unterschiede sind:
SORTS:
btree, T, boolean
OPERATIONS:
newtree: btree
node: T btree btree btree
isempty: btree boolean
root: btree T
left: btree btree
right: btree btree
RULES:
isempty(newtree) = true
isempty(node(x, l, r)) = false
root(node(x, l, r)) = x
left(node(x, l, r)) = l
right(node(x, l, r)) = r
END BTrees.
sie liefert uns auch sofort eine Darstellung für einen Wald durch einen äquivalenten Binärbaum. Für jeden (allgemeinen) Baum des Waldes gilt: in den linken Unterbaum des zugeordneten Binärbaumes kommen die Nachkommen, in den rechten Unterbaum die jüngeren Brüder samt ihren Nachkommen.TYPE btree = POINTER TO brecord; brecord = RECORD wert: atom; left, right: btree; END;