Next: bst bnodes iterating pre-order, Up: bst bnodes iterating [Index]
Forwards in–order iteration: visit all the nodes from the leftmost to the rightmost. Backwards in–order iteration: visit all the nodes from the rightmost to the leftmost. As example, given the tree:
5-------10----12 | | | 1--3--4 7--9 11 | | | 2 6 8
the inorder iteration is:
forward: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 backward: 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
Here is an example of forwards and backwards in–order iteration using trees of fixnums as defined in the introduction (see bst intro):
(define root
;; 5-------10----12
;; | | |
;; 1--3--4 7--9 11
;; | | |
;; 2 6 8
(tree 5 1 3 2 4 10 7 12 6 9 8 11))
;;By reversing we return a list in which: the first item
;;is the sort key of the first node visited in the iteration.
(reverse
(binary-tree-fold-in-order-forwards
(lambda (knil node)
(cons (<fixnum-node>-sort-key node) knil))
'() root))
⇒ (1 2 3 4 5 6 7 8 9 10 11 12)
;;By reversing we return a list in which: the first item
;;is the sort key of the first node visited in the iteration.
(reverse
(binary-tree-fold-in-order-backwards
(lambda (node knil)
(cons (<fixnum-node>-sort-key node) knil))
'() root))
⇒ (12 11 10 9 8 7 6 5 4 3 2 1)
The following syntactic bindings are exported by the library
(vicare containers binary-search-trees). The bindings whose
name is prefixed with $ are unsafe operations: they do
not validate their arguments before accessing them.
Like fold-left for lists, visit the nodes of a binary tree with a
in–order forwards iteration. The argument root must be #f
to represent an empty tree or an instance of <binary-node>
representing the root of a tree.
Perform the first step in a in–order forwards iteration. The argument
root must be #f to represent an empty tree or an instance of
<binary-node> representing the root of a tree. If the tree is
empty: return #f; otherwise return an instance of
<binary-node> representing the first visited node.
Advance an in–order forwards iteration by one step starting from
bnode, which must be an instance of <binary-node>. If
bnode is the last in the iteration: return #f; otherwise
return an instance of <binary-node> representing the next
visited node.
Like fold-right for lists, visit the nodes of a binary tree with
a in–order backwards iteration. The argument root must be
#f to represent an empty tree or an instance of
<binary-node> representing the root of a tree.
Perform the first step in a in–order backwards iteration. The argument
root must be #f to represent an empty tree or an instance of
<binary-node> representing the root of a tree. If the tree is
empty: return #f; otherwise return an instance of
<binary-node> representing the first visited node.
Advance an in–order backwards iteration by one step starting from
bnode, which must be an instance of <binary-node>. If
bnode is the last in the iteration: return #f; otherwise
return an instance of <binary-node> representing the next
visited node.
Next: bst bnodes iterating pre-order, Up: bst bnodes iterating [Index]