Added purely functional red-black trees, needs checking