Top Banner
Zip Trees Robert E. Tarjan Princeton University & Intertrust Technologies Pitea, Sweden, 9 January 2018 To Don, who inspired me to design and analyze algorithms
52

Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Jan 21, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Zip TreesRobertE.Tarjan

PrincetonUniversity&IntertrustTechnologies

Pitea,Sweden,9January2018

ToDon,whoinspiredmetodesignandanalyzealgorithms

Page 2: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

ObservationsOverthelast60years,computerscientistshavedevelopedmanybeautifulandtheoreticallyefficientalgorithms.

Butcomputerscienceisstill ayoungfield.

Wehaveoftensettledforthefirst(goodenough)solution.

Itmaynotbethebest– thedesignspaceisrich.

Page 3: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Goal:simplicityIdentifythesimplestpossibleefficientmethodstosolvebasicproblems:algorithmsfrom“thebook”

ala“proofsfromthebook”(Erdős)Algorithmsassimpleaspossible,withprovable resourcebounds

forimportantinputclasses,andefficientinpractice

Page 4: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

“Makeeverythingassimpleaspossible,butnotsimpler”- Einstein

Sometimes,simplicityiscritical,notjustdesirable,notablyinconcurrent algorithms.

Makingaconcurrentalgorithmcorrectisnotoriously hard.Thesimplertheunderlyingidea,thegreaterthechanceofsuccess.

Page 5: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Exampleofsimplicity:Zip Trees

(imagefromStreetArtonPinterest)

Page 6: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Dictionary:containsasetS ofitems,eachwithassociatedinformation.

Operations:Access(x):Determineifx isinS.Ifso,returnx’s information.

Insert(x):(x notinS)Insertx anditsinformation.

Delete(x):(x inS)Deletex anditsinformation.

Page 7: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

BinarysearchUniverseofitems(orofaccesskeysorindexvalues)istotallyordered,allowingbinarycomparison

Binarysearch:MaintainS insortedorder.Tofindx inS:IfS empty,stop(failure).IfS non-empty,comparex tosomeitemy inS.Ifx =y,stop(success).Ifx <y,searchin{z inS|z <y}.Ifx >y,searchin{z inS|z >y}.

Page 8: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Implementation:binarysearchtree

F

M

X

P

D

B E

Page 9: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Binarytree:Eachnodex hasaleftchildx.leftandarightchildx.right,eitherorbothofwhichcanbenull.Anodeisbinary,unary,oraleaf ifithas0,1,or2nullchildren,respectively.

n =#(non-null)nodesdepthofx:lengthofpathfromroottox,roothasdepth0

heightofx:maxlengthofapathfromx toaleaf,leaveshavedepth0

Page 10: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Binarysearchtree

Items(keyplusdata)innodes,onepernode,insymmetricorder(in-order):itemsinleftsubtreeareless,itemsinrightsubtree aregreaterinkeyorder.

TofindanitemtakesO(d +1)time,whered =depthofitem’snode,orofnullnodereachedbysearchifitemisnotintree.

Page 11: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Binarysearchtree

F

M

X

P

D

B E

Page 12: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

BestcaseAllleaveshavedepthswithin1:depth⌊lgn⌋.

(lg:base-twologarithm)

Canachieveiftreeisstatic(orinsertionorderdeterminedoff-line)

E

MB

F I L O RD TA

G S

Q

K

C JH P U

Page 13: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

(Leaf)InsertionSearch.Replacenullbynodewithitem.InsertR F

M

X

P

D

B E

Page 14: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

LeafInsertionSearch.Replacenullbynodewithitem.InsertR F

M

X

P

D

B E

R

Page 15: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

WorstcaseNaturalbutbadinsertionorder:sorted.InsertA,B,C,D,E,F,G,…

Depthoftreeisn – 1.Worst-caseaccesscostisn.

=list!

A

B

C

D

E

F

G

Page 16: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Waystoimproveefficiency

• Balance: AVLtrees(Adelson-Velskii &Landis1962),red-blacktrees(Bayer1972;Guibas &Sedgewick1978),weakAVLtrees(Sen&Tarjan 2009)…

• Self-adjustment: Splaytrees(Sleator &Tarjan1983)

• Randomization:Zip trees

Page 17: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

AnAVLtree(imagefromWikipedia)

Page 18: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Ared-blacktree(imagefromWikipedia)

Page 19: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

ASplayTree

(imagebyJorgeStolfi)

Page 20: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Rotation(restructuringprimitive)

rotateatxrotateatyy

x

x

y

A B

C A

B C

z z

right

left

20

Page 21: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Zip Trees

Idea:Oninsertion,chooseaheightforanitemandinsertitatthegivenheight,orclosetoit.Chooseheightslikethoseinabest-caseBST:½thenodesatheight0,¼atheight1,1/8atheight2…

Choosetheheightsrandomly.

Page 22: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)
Page 23: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Wecannotchooseheightsexactly.

Instead,foreachnodetobeinsertedwechoosearank,asfollows:flipafaircoinandcountthenumberofheadsbeforethefirsttail.Therankofanodedoesnotchangewhileitisinthetree.

Therankofanodehasageometric distribution:anodehasrankk withprobability1/2k +1.

Wewanttheheightofanodetobewithinaconstantfactorofitsrank.

Page 24: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Zip*TreeAbinarysearchtreeinwhicheachnodehasarankchosenrandomlyoninsertion,withnodessymmetricallyorderedbykeyandheaporderedbyrank,breakingranktiesinfavorofsmallerkey:

x.left.key <x.key <x.right.keyx.left.rank <x.rankx.right.rank ≤x.rank

*Zip:“tomoveveryfast”

Page 25: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

AZip Tree

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

Page 26: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Zip treeinsertion?

Rootinsertion(Stephenson1980)

Letx betheitemtobeinserted.Followthesearchpathforx,unzipping itbysplittingitintoapathPofnodeswithkeyslessthanthatofxandapathQofnodeswithkeysgreaterthanthatofx.MakethetopnodeofPtheleftchildofx andthetopnodeofQ therightchildofx.

Page 27: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A MG

InsertN

Page 28: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A MG

InsertN N

Page 29: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A MG

InsertNUnzipsearchpath

N

Page 30: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

FP

X

R

D

C E

Q

Y

H

A MG

N

Page 31: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Ziptreeinsertion:hybridofleaf&rootinsertion

(Sprugnoli 1980;Martinez&Roura 1998)

Toinsertx: Chooseitsrank.Searchforxuntilreachingthenodey thatx shouldreplace. Unziptherestofthesearchpath(fromydown)bysplittingitintoapathPofnodeswithkeyslessthanx’sandapathQofnodeswithkeysgreaterthanx’s.MakethetopofPtheleftchildofxandthetopofQ therightchildofx.Makex achildoftheoldparentofy.

Page 32: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

Page 33: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

InsertJ

Page 34: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

InsertJrank=2

Page 35: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

InsertJrank=2ReplaceH

Page 36: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

InsertJrank=2ReplaceHUnzippathfromH

Page 37: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

InsertJrank=2ReplaceHUnzippathfromH J2

Page 38: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

J2

Page 39: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Aziptree(imagefromStreetArtonPinterest)

Page 40: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Ziptreedeletion:Inverseofinsertion

Searchforthenodex tobedeleted.Zip thepathfromx toitspredecessor(inkeyorder)withthepathfromx toitssuccessor(inkeyorder),bymergingthemindecreasingrankorder,breakingtiesinfavorofsmallerkey,toformasinglepathP.ReplacexasachildofitsparentbythetopnodeofP.

Page 41: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

DeleteP

J2

Page 42: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

P

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2 3

MG0

3

11

DeletePZipthepathsfromPtoMandPtoQ

J2

Page 43: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2

MG0

3

11

DeletePZipthepathsfromPtoMandPtoQ J2

Page 44: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

F

X

R

D

C E

Q

Y

H

A0

1 0

0

1

21

2

MG0

3

11

J2

Page 45: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Staticpropertiesofziptrees

Expectedrootrank:lgn +O(1)RootrankisO(logn)withhighprobabilityE(nodedepth)=1.5lgn+O(1)(Prodinger 1996)TreedepthisO(logn)withhighprobabilityTreestructureisuniquelydeterminedbyranks:

History-independentdatastructure

Page 46: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Dynamicpropertiesofzip trees

Expectedrestructuringtimetoinsertordeleteanodeofrankk =O(k).ExpectedrestructuringtimeisO(1)ProbabilityofrestructuringtakingO(k)timeisexponentiallysmallinkInsertion/deletioncanbedonepurelytop-downNorotationcases,justunzippingandzippingNoswappingondeletion

Page 47: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Arezip treesnew?

Azip treeisatreap (Aragon&Seidel1996)withadifferentwayofchoosingranksanddifferentinsertion/deletionalgorithms.Zip treesallowrankties;treaps don’t.Azip treeisabinary-treerepresentationofaskiplist(Pugh1990)

Page 48: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Atreap(imagefromWikipedia)

Page 49: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Askiplist(imagebyIgorOstrovsky)

Page 50: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Zip Trees:Summary

Insertionsanddeletionsaresimpleandefficient,takeO(1)expectedrestructuring,andarepurelytop-down

History-independentNorestructuringonaccessStandardbinarytreerepresentation:lessspacethanskiplists

O(lglgn)balancebitspernodeCanbreakranktiesbyusingfractionalranks,

improvesE(depth)by8%Canmodifytosupportfrequency-biasedaccess

Page 51: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Currentwork

Develop,analyze,andimplementefficientnon-blockingconcurrent zip trees

Page 52: Zip Trees Knuth80knuth80.elfbrink.se/.../2018/01/Tarjan_Zip_Trees_Knuth80.pdf · 2018. 2. 6. · Zip tree insertion: hybrid of leaf & root insertion (Sprugnoli1980; Martinez & Roura1998)

Thanks!