;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; DRAW a BINARY TREE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (draw-btree bnode) (let ((y-inc 20)) (define (draw-beetree bnode x-lo x x-hi y) (cond ((and (not (empty? bnode)) (not (empty? (left bnode)))) (let ((lx (quotient (+ x-lo x -1) 2)) (ly (+ y y-inc))) (draw-line x y (quotient (+ x-lo x -1) 2) ly 2) (draw-beetree (left bnode) x-lo lx x ly)))) (cond ((and (not (empty? bnode)) (not (empty? (right bnode)))) (let ((rx (quotient (+ x x-hi 1) 2)) (ry (+ y y-inc))) (draw-line x y rx ry 2) (draw-beetree (right bnode) x rx x-hi ry))))) (clear-graphics!) (draw-beetree bnode 20 300 600 30)))