https://medium.com/@joseph.h.cottingham/why-do-balanced-binary-search-trees-exist-how-do-they-work-bbb1495ba06a