3 (defmethod print-object ((node tree-node) stream)
4 (print-unreadable-object (node stream)
5 (format stream "btn ~A, rank ~A"
9 (defmethod print-object ((node avl-tree-node) stream)
10 (print-unreadable-object (node stream)
11 (format stream "avltn ~A/~A, rank ~A"
16 (defmethod print-object ((node red-black-tree-node) stream)
17 (print-unreadable-object (node stream)
18 (format stream "rbtn ~A/~A, rank ~A"
23 (defmethod print-object ((node aa-tree-node) stream)
24 (print-unreadable-object (node stream)
25 (format stream "aatn ~A/~A, rank ~A"
30 (defun indent-to-level (n &optional (stream *standard-output*))
32 (write-char #\Space stream)))
34 (defun pprint-tree (tree &optional (stream *standard-output*))
35 (labels ((recursive-print (node level char)
36 (indent-to-level level stream)
37 (write-char char stream)
38 (write-char #\Space stream)
41 (unless (null (left node))
42 (recursive-print (left node) (1+ level) #\l))
43 (unless (null (right node))
44 (recursive-print (right node) (1+ level) #\r))))
45 (if (null (root tree))
46 (format stream "empty tree~%")
47 (recursive-print (root tree) 0 #\R))