UNB/ CS/ David Bremner/ teaching/ cs4613/ lectures/ lecture13/ bt8.rkt
#lang typed/racket
(define-type-alias BT (U mt node))
(struct mt ())
(struct node ([v : Number] [l : BT] [r : BT]))

(define t1
  (node 5
        (node 3
              (node 1 (mt) (mt))
              (mt))
        (node 7
              (mt)
              (node 9 (mt) (mt)))))

(define (size-tr [t : BT]) : Number
  (cond
    [(node? t) 0]
    [(mt? t) (+ 1
                (size-tr (node-l t))
                (size-tr (node-r t)))]))

(size-tr t1)