trees.splay: fix delete-at.

db4
John Benediktsson 2011-10-14 17:52:24 -07:00
parent 7d31da68b8
commit ce1d69aa0a
2 changed files with 10 additions and 10 deletions

View File

@ -31,3 +31,8 @@ IN: trees.splay.tests
{ 1 "a" } { 2 "b" } { 3 "c" }
} >splay >alist
] unit-test
[ 0 ] [
100 iota [ dup zip >splay ] keep
[ over delete-at ] each assoc-size
] unit-test

View File

@ -16,7 +16,7 @@ TUPLE: splay < tree ;
dup left>>
[ right>> swap left<< ] 2keep
[ right<< ] keep ;
: rotate-left ( node -- node )
dup right>>
[ left>> swap right<< ] 2keep
@ -94,18 +94,13 @@ DEFER: (splay)
dup [ dup get-largest key>> swap splay-at ] when ;
: splay-join ( n2 n1 -- node )
splay-largest [
[ right<< ] keep
] [
drop f
] if* ;
splay-largest [ [ right<< ] keep ] when* ;
: remove-splay ( key tree -- )
[ get-splay nip ] keep [
dup dec-count
2dup get-splay [
dup right>> swap left>> splay-join
swap root<<
] [ drop ] if* ;
>>root dec-count drop
] [ 3drop ] if ;
: set-splay ( value key tree -- )
2dup get-splay [ 2nip value<< ] [