PasteRack.org | ||
Paste # 18723 | ||
2025-08-29 12:15:26 | ||
Fork as a new paste. | ||
Paste viewed 324 times. | ||
Tweet | ||
Embed: | ||
#lang racket (require 2htdp/image) (define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))(define (make-tree root left right) (cond ;; no children [(and (empty-image? left) (empty-image? right)) root] ;; only left child [(empty-image? right) (above root (line 0 (/ (image-height left) 2) "black") left)] ;; only right child [(empty-image? left) (above root (line 0 (/ (image-height right) 2) "black") right)] ;; both children [else (above root (beside (line (- (/ (image-width left) 2)) (/ (image-width left) 4) "black") (line (/ (image-width right) 2) (/ (image-width right) 4) "black")) (beside left (rectangle (/ (image-width left) 2) 1 "solid" "white") (rectangle (/ (image-width right) 2) 1 "solid" "white") right))]));; Usage examples(define leaf1 (text "1:abc" 20 "black"))(define leaf2 (text "10:xyz" 20 "black"))(define leaf3 (text "7:foo" 20 "black"));; both children(define tree1 (make-tree (text "5:def" 20 "black") leaf1 leaf2));; only left(define tree2 (make-tree (text "20:left-only" 20 "black") leaf3 empty-image));; only right(define tree3 (make-tree (text "30:right-only" 20 "black") empty-image leaf2));; no children(define tree4 (make-tree (text "40:leaf" 20 "black") empty-image empty-image))
=>
#<syntax:/home/pasterack/pasterack/tmp/18723/18723code.scrbl:5:0 "#lang racket">:3:59: read-syntax: expected a `)` to close `(` context...: /home/pasterack/racket88/collects/syntax/module-reader.rkt:214:17: body /home/pasterack/racket88/collects/syntax/module-reader.rkt:211:2: wrap-internal /home/pasterack/racket88/collects/racket/../syntax/module-reader.rkt:76:9: wrap-internal/wrapper /home/pasterack/racket88/share/pkgs/scribble-lib/scribble/private/manual-code.rkt:138:19: loop /home/pasterack/racket88/share/pkgs/scribble-lib/scribble/private/manual-code.rkt:112:0: get-tokens /home/pasterack/racket88/share/pkgs/scribble-lib/scribble/private/manual-code.rkt:56:0: typeset-code body of "/home/pasterack/pasterack/tmp/18723/18723code.scrbl" .../private/map.rkt:40:19: loop .../racket/cmdline.rkt:191:51 body of "/home/pasterack/racket88/share/pkgs/scribble-lib/scribble/run.rkt"