https://medium.com/@kirolos.youssef/mastering-data-structures-guide-for-beginners-and-experts-97eb2381de35