Jotter <2026-03-23 Mon>
(defstruct node
(value nil :type fixnum)
(left nil :type bt)
(right nil :type bt))
(deftype bt () '(or node null))
(make-node :value 3)
(node-value (make-node :value 3))
(make-node :left (make-node :value 2)
:value 3
:right (make-node :value 4))
(node-left (make-node :left (make-node :value 2)
:value 3
:right (make-node :value 4)))
(node-value (node-left (make-node :left (make-node :value 2)
:value 3
:right (make-node :value 4))))
(node-p (make-node :left (make-node :value 2)
:value 3
:right (make-node :value 4)))
;;;;
(defun test-sum-bt ()
(and (= 3 (sum-bt (make-node :value 3)))
(= 2 (sum-bt (make-node :value 2)))
(= 8 (sum-bt (make-node :value 2
:left (make-node :value 2)
:right (make-node :value 4))))
(= 0 (sum-bt nil))
(= 0 (sum-bt (make-node :value 0)))
(= 9 (sum-bt (make-node :left (make-node :value 2)
:value 3
:right (make-node :value 4))))))
(defun sum-bt (bt)
"Sum all the numbers in the binary tree, BT"
(cond ((null bt) 0)
(t (+ (node-value bt)
(sum-bt (node-left bt))
(sum-bt (node-right bt))))))
;;;;
(defun test-mth ()
(and (equal :error (mth 0 ()))
(equal 1 (mth 1 '(0 1 2 3)))
(equal :error (mth 3 '(0 1 2)))
(equal 99 (mth 0 '(99)))
(equal :error (mth 1 ()))))
(defun mth (m ns)
"Return the MTH element of the list of integers, NS, where the indexing is
zero based."
(cond ((null ns) :error)
((zerop m) (first ns))
(t (mth (- m 1) (rest ns)))))
(test-mth)
invert-b(s)t
nth
Author: Breanndán Ó Nualláin
Created: 2026-03-23 Mon 17:33
Validate