#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)