Wereld Gent België Brussel China Azië Europa Frankrijk Beijing Avignon Kortrijk Root Node Leaf Node Subtree Bomen als hiërarchische gegevensstructuur
Bomen in LOGO Een boom is een lijst
Het eerste element is het gegeven van de node.
De volgende n elementen zijn de kind-bomen
=> make "voorbeeldboom [gegeven [...] [...] ...]
Opdracht : implementeer volgende functies:
to gegeven :boom
to kinderen :boom
to bladp :boom
Bomen in LOGO : oplossingen to gegeven :boom
op first :boom
end
to kinderen :boom
op butfirst :boom
end
to bladp :boom
op emptyp children :boom
end
Bomen in LOGO : maken van de boom to maakwereldboom
Make "wereldboom ~
[wereld
[Europa
[Belgie
[Gent]
[Kortrijk]
[Brussel]]
[Frankrijk
[Avignon]]]
[Azie
[China
[Beijing]]]]
end
Bomen in LOGO : zoeken in de boom Wat we willen:
zoekinboom "Kortrijk :wereldboom
Resultaat: [wereld Europa Belgie Kortrijk]
zoekinboom "Beijing :wereldboom
Resultaat: [wereld Azie China Beijing]
zoekinboom "Belgie :wereldboom
Resultaat: [wereld Europa Belgie]
Hoe?
recursief zoeken in de boom én in de kinderen van een boom
Bomen in LOGO : zoeken in de boom oplossing to zoekinboom :gezocht :boom
if emptyp :boom [op []]
ifelse equalp gegeven :boom :gezocht ~
[op (list :gezocht)]~
[ifelse bladp :boom
[op []]~
[make "tmp zoekinkinderen :gezocht kinderen :boom
ifelse emptyp :tmp
[op []] ~
[op sentence gegeven :boom :tmp]
]
]
end
Bomen in LOGO : zoeken in de boom oplossing to zoekinkinderen :gezocht :kinderen
if emptyp :kinderen [op []]
op sentence (zoekinboom :gezocht first :kinderen)(zoekinkinderen :gezocht butfirst :kinderen)
end
Comments