fixed splay-tree bug
This commit is contained in:
parent
4aef03795d
commit
ad76c9ea7b
|
@ -865,10 +865,13 @@ Top-down splay
|
|||
;; condensing copy
|
||||
(v:set-next! mem* NODE-SIZE)
|
||||
(let loop ([n root])
|
||||
(when n
|
||||
(let ([n* (vnode! mem* (vnode-key mem n) (vnode-value mem n) #f #f)])
|
||||
(set-vnode-left! mem* n* (loop (vnode-left mem n)))
|
||||
(set-vnode-right! mem* n* (loop (vnode-right mem n))))))
|
||||
(cond [n
|
||||
(let ([n* (vnode! mem* (vnode-key mem n) (vnode-value mem n) #f #f)])
|
||||
(set-vnode-left! mem* n* (loop (vnode-left mem n)))
|
||||
(set-vnode-right! mem* n* (loop (vnode-right mem n)))
|
||||
n*)]
|
||||
[else #f]))
|
||||
(set-compact-splay-tree-root! s NODE-SIZE)
|
||||
(set-compact-splay-tree-mem! s mem*))))
|
||||
|
||||
;; ========
|
||||
|
|
|
@ -227,12 +227,12 @@
|
|||
|
||||
(provide performance)
|
||||
|
||||
(define (deep-test [test 'splay])
|
||||
(define (deep-test [test 'splay] [count 100])
|
||||
(let ([mk (case test
|
||||
((splay) mksplay)
|
||||
((adj) mkadj)
|
||||
((skip) mkskip))])
|
||||
(for ([seed (in-range 100)])
|
||||
(for ([seed (in-range count)])
|
||||
(random-seed seed)
|
||||
(printf "seed = ~s\n" seed)
|
||||
(p "test" dict-test mk #t))))
|
||||
|
|
Loading…
Reference in New Issue
Block a user