;; count-leaves ;; (define (count-leaves tree) (if (null? tree) 0 (if (pair? tree) (+ (count-leaves (car tree)) (count-leaves (cdr tree))) 1))) (define tree (list (list 1 2) (list 3 4))) (define (print-leaves tree) (if (null? tree) '() (if (pair? tree) (begin (print-leaves (car tree)) (print-leaves (cdr tree))) (begin (display tree) (newline))))) ;; --- aside : reminder about length of list (define (length items) ;; (1 2 3 4) ... 1 + 1 + 1 + 1 + 0 (null? items) 0 (+ 1 (length (cdr items)))) ;; ------------- (display "(count-leaves tree)\n") (display (count-leaves tree)) ;; prints 4 (newline) ;; ---------------- (display "(print-leaves tree)\n") (print-leaves tree) ;; ----------------------------- (display "(print-leaves '(1 (list 1 2 3) (list 4 5 6)))) \n") (print-leaves '(1 (list 1 2 3) (list 4 5 6)))