I'm trying to apply a function to a tree in the form of a Map but not sure how to exactly go about it. Here's my attempt..
(define-struct node (value left middle right)#:transparent)
(struct emptyNode () #:transparent) ; leaf node
(define T (node 1 (node 2 (node 5 (emptyNode) (emptyNode) (emptyNode)) (emptyNode) (emptyNode))
(node 3 (emptyNode) (node 6 (emptyNode) (node 8 (emptyNode) (emptyNode) (emptyNode)) (emptyNode)) (emptyNode))
(node 4 (emptyNode) (emptyNode) (node 7 (emptyNode) (emptyNode) (emptyNode)))))
; 1
; / | \
; 2 3 4
; / | \
; 5 6 7
; |
; 8
;f
; a function, f, used in MaptoTree
(define (f b)
(* b 2))
;MaptoTree
; takes a function, f, and a tree structure, tree, as parameters.
; it should then produce a new tree structure where f has been applied to each value in the original tree
(define (MaptoTree f T)
(if (pair? T)
((map (lambda (x) (MaptoTree f x)) (rest T)))
(f T)))
edit: removed question about converting struct to list