home *** CD-ROM | disk | FTP | other *** search
- #
- # B I N A R Y T R E E S
- #
-
- # This program accepts string representations of binary trees from
- # standard input. It performs a tree walk and lists the leaves of
- # each tree.
-
- record node(data,ltree,rtree)
-
- procedure main()
- local line, tree
- while line := read() do {
- tree := tform(line)
- write("tree walk")
- every write(walk(tree))
- write("leaves")
- every write(leaves(tree))
- }
- end
-
- procedure tform(s)
- local value,left,right
- if /s then return
- s ? if value := tab(upto('(')) then {
- move(1)
- left := tab(bal(','))
- move(1)
- right := tab(bal(')'))
- return node(value,tform(left),tform(right))
- }
- else return node(s)
- end
-
- procedure walk(t)
- suspend walk(\t.ltree | \t.rtree)
- return t.data
- end
-
- procedure leaves(t)
- if not(\t.ltree | \t.rtree) then return t.data
- suspend leaves(\t.ltree | \t.rtree)
- end
-