faster than in an array)solike arrayslinked lists are best used when the amount of data is comparatively small linked list is somewhat more complicated to program than an arraybut is simple compared with tree or hash table binary search trees binary tree is the first structure to consider when arrays and linked lists prove too slow tree provides fast (logninsertionsearchingand deletion traversal is ( )which is the maximum for any data structure (by definitionyou must visit every itemyou can also find the minimum and maximum quicklyand traverse range of items an unbalanced binary tree is much easier to program than balanced treebut unfortunatelyordered data can reduce its performance to (ntimeno better than linked list howeverif you're sure the data will arrive in random orderthere' no point using balanced tree balanced trees of the various kinds of balanced treeswe discussed red-black trees and trees they are both balanced treesand thus guarantee (lognperformance whether the input data is ordered or not howeverthese balanced trees are challenging to programwith the red-black tree being the more difficult they also impose additional memory overheadwhich may or may not be significant the problem of complex programming may be reduced if commercial class can be used for tree in some cases hash table may be better choice than balanced tree hash-table performance doesn' degrade when the data is ordered there are other kinds of balanced treesincluding avl treessplay trees - treesand so onbut they are not as commonly used as the red-black tree hash tables hash tables are the fastest data storage structure this makes them necessity for situations in which computer programrather than humanis interacting with the data hash tables are typically used in spelling checkers and as symbol tables in computer language compilerswhere program must check thousands of words or symbols in fraction of second hash tables may also be useful when personas opposed to computerinitiates dataaccess operations as noted abovehash tables are not sensitive to the order in which data is insertedand so can take the place of balanced tree programming is much simpler than for balanced trees hash tables require additional memoryespecially for open addressing alsothe amount of data to be stored must be known fairly accurately in advancebecause an array is used as the underlying structure hash table with separate chaining is the most robust implementation unless the amount of data is known accurately in advancein which case open addressing offers simpler programming because no linked list class is required hash tables don' support any kind of ordered traversal or access to the minimum or maximum items if these capabilities are importantthe binary search tree is better choice