AVL Tree implementation including Deletion