3 (defmethod sequence:length ((binary-tree binary-tree))
6 (defmethod sequence:make-simple-sequence-iterator ((binary-tree binary-tree)
7 &key from-end (start 0) end)
8 (when (or (not (zerop start)) end)
9 (error "~A and ~A are unsupported for ~A" 'start 'end 'binary-tree))
10 (multiple-value-bind (current stack)
11 (extreme-node-with-path (root binary-tree) (not from-end))
12 (declare (ignore current))
13 (values stack NIL from-end)))
15 (defmethod sequence:iterator-step ((binary-tree binary-tree) iterator from-end)
16 (let* ((current (car iterator))
17 (stack (cdr iterator))
18 (node (if from-end (left current) (right current))))
23 (multiple-value-bind (current stack)
24 (extreme-node-with-path node (not from-end) stack)
25 (declare (ignore current))
28 (defmethod sequence:iterator-endp ((binary-tree binary-tree) iterator limit from-end)
29 (declare (ignore limit from-end))
32 (defmethod sequence:iterator-element ((binary-tree binary-tree) iterator)
33 (datum (car iterator)))
35 ;; (defmethod sequence:iterator-index ((binary-tree binary-tree) iterator))