memory useful mathematical facts prerequisites we have written this book assuming that the reader comes to it with certain knowledge that iswe assume that the reader is at least vaguely familiar with high-level programming languagesuch as cc++or javaand that he or she understands the main constructs from such high-level languageincludingvariables and expressions methods (also known as functions or proceduresdecision structures (such as if-statements and switch-statementsiteration structures (for-loops and while-loopsfor readers who are familiar with these conceptsbut not with how they are expressed in javawe provide primer on the java language in stillthis book is primarily data structures booknot java bookhenceit does not provide comprehensive treatment of java neverthelesswe do not assume that the reader is necessarily familiar with object-oriented design or with linked structuressuch as linked listsfor these topics are covered in the core of this book in terms of mathematical backgroundwe assume the reader is somewhat familiar with topics from high-school mathematics even soin we discuss the seven most-important functions for algorithm analysis in factsections that use something other than one of these seven functions are considered optionaland are indicated with star we give summary of other useful mathematical factsincluding elementary probabilityin appendix about the authors professors goodrich and tamassia are well-recognized researchers in algorithms and data structureshaving published many papers in this fieldwith applications to internet computinginformation visualizationcomputer securityand geometric computing they have served as principal investigators in several joint projects sponsored by the national science foundationthe army research officeand the