aboutsummaryrefslogtreecommitdiffstats
path: root/mcgoron
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2025-02-15 19:00:50 -0500
committerGravatar Peter McGoron 2025-02-15 19:00:50 -0500
commit3caad6d9f1098b2a9d6e5d016b883d855491ae05 (patch)
tree4f46106f9df00c228ecd72e3a3095f4144265181 /mcgoron
parentadd node->generator (diff)
generator->node
Diffstat (limited to 'mcgoron')
-rw-r--r--mcgoron/weight-balanced-trees/internal.scm26
-rw-r--r--mcgoron/weight-balanced-trees/internal.sld2
2 files changed, 13 insertions, 15 deletions
diff --git a/mcgoron/weight-balanced-trees/internal.scm b/mcgoron/weight-balanced-trees/internal.scm
index 9b9fdd1..ffbe6b4 100644
--- a/mcgoron/weight-balanced-trees/internal.scm
+++ b/mcgoron/weight-balanced-trees/internal.scm
@@ -435,17 +435,15 @@
(loop (insert comparator node value))))))
(define (node->in-order-generator node)
- (if (null? node)
- eof-object
- (let ((queue (list-queue)))
- (define (traverse-left! node)
- (when (not (null? node))
- (list-queue-add-front! node)
- (traverse-left! (get-left node))))
- (traverse-left! node)
- (lambda ()
- (if (list-queue-empty? queue)
- (eof-object)
- (let ((current (list-queue-remove-front! queue)))
- (traverse-left! (get-right current))
- (get-data current)))))))
+ (let ((queue (list-queue)))
+ (define (traverse-left! node)
+ (when (not (null? node))
+ (list-queue-add-front! node)
+ (traverse-left! (get-left node))))
+ (traverse-left! node)
+ (lambda ()
+ (if (list-queue-empty? queue)
+ (eof-object)
+ (let ((current (list-queue-remove-front! queue)))
+ (traverse-left! (get-right current))
+ (get-data current))))))
diff --git a/mcgoron/weight-balanced-trees/internal.sld b/mcgoron/weight-balanced-trees/internal.sld
index 3839126..0676e81 100644
--- a/mcgoron/weight-balanced-trees/internal.sld
+++ b/mcgoron/weight-balanced-trees/internal.sld
@@ -37,6 +37,6 @@
union intersection difference xor
update insert delete
every
- node->generator)
+ node->generator generator->node)
(include "internal.scm"))