index d7e0e23..ba4df37 100644 (file)
@@ -39,15 +39,16 @@ Of course, if you need help or want us to review your efforts, we'll be glad to
solution that traverses the tree exactly once, replacing each
leaf as soon as you see it?

solution that traverses the tree exactly once, replacing each
leaf as soon as you see it?

-       Consider a variation in which you must replace each leaf with
-       its number of occurrences in the tree.  Is there any way to do
-       that with a single traversal?
-
You can assume that the tree is binary, leaf-labeled (no
labels on the internal nodes), and that the leafs are, say,
chars.

You can assume that the tree is binary, leaf-labeled (no
labels on the internal nodes), and that the leafs are, say,
chars.

-       Here is [a hint](/hints/assignment_10_hint).
+       Here is [a hint](/hints/assignment_10_hint_1).
+
+       Consider a variation in which you must replace each leaf with
+       its number of occurrences in the tree.  Is there any way to do
+       that with a single traversal? (Here is [a hint](/hints/assignment_10_hint_2).)
+

2.     Armed with your solution to problem 1, try this: you have as input a leaf-labeled, binary tree whose labels are strings. You also have as input an interpretation function from strings to meanings. Let the meanings of your strings be primitive elements, for instance:

2.     Armed with your solution to problem 1, try this: you have as input a leaf-labeled, binary tree whose labels are strings. You also have as input an interpretation function from strings to meanings. Let the meanings of your strings be primitive elements, for instance:
@@ -151,7 +152,7 @@ Of course, if you need help or want us to review your efforts, we'll be glad to
((eq? (car lst) before)
(insert-co new before after (cdr lst) (lambda (new-lst lefts rights) (k (cons new (cons before new-lst)) (succ lefts) rights))))
((eq? (car lst) after)
((eq? (car lst) before)
(insert-co new before after (cdr lst) (lambda (new-lst lefts rights) (k (cons new (cons before new-lst)) (succ lefts) rights))))
((eq? (car lst) after)
-                      (insert-co new before after (cdr lst) (lambda (new-lst lefts rights) (k (cons (after (cons new new-lst))) lefts (succ rights)))))
+                      (insert-co new before after (cdr lst) (lambda (new-lst lefts rights) (k (cons after (cons new new-lst)) lefts (succ rights)))))
(else
(insert-co new before after (cdr lst) (lambda (new-lst lefts rights) (k (cons (car lst) new-lst) lefts rights)))))))
-->
(else
(insert-co new before after (cdr lst) (lambda (new-lst lefts rights) (k (cons (car lst) new-lst) lefts rights)))))))
-->