A tree Node’s predecessor is the largest child Node that is smaller than the current Node.


Finding the Predecessor

To find a Node’s predecessor, read the rightmost node that is a child of the current Node’s left child.

static Node getPredecessor(Node node) {
	if(node == null || node.left == null) return null;
 
	return rightmostChild(node.left);
}
 
static Node rightmostChild(Node node) {
	if(node.right == null) return node;
 
	return rightmostChild(node.right);
}