UNB/ CS/ David Bremner/ teaching/ cs4613/ lectures/ lecture07/ tree-sum.rkt
#lang plait
(define-type BinTree
  [Empty]
  [Leaf (val : Number)]
  [Node (left : BinTree) (right : BinTree)])

(define (tsum tree)
  (type-case BinTree tree
    [(Empty) 0]
    [(Leaf num) num]
    [(Node left right) (+ (tsum left) (tsum right))]))

(define 1234-tree
  (Node (Node (Leaf 1) (Node (Leaf 2) (Empty)))
        (Node (Leaf 3) (Leaf 4))))
(test (tsum 1234-tree)  10)