TODO: fix BinarySearchTree.Delete