Correctly finds immediate predecessor element. Need to think about deleting from the left subtree.
Delete / replace by predecessor working for tree with single-valued nodes