Binary Search Tree combining various best features from ones I've seen in different books