Data structures and algorithms: concepts, techniques and applications (McGraw Hill, 2008)