refactored bst delete