fixed splay-tree bug

This commit is contained in:
Ryan Culpepper 2010-10-03 00:31:16 -06:00
parent 4aef03795d
commit ad76c9ea7b
2 changed files with 9 additions and 6 deletions

View File

@ -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*))))
;; ========

View File

@ -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))))