We can derive a simple (?) rule for determining the node in the binary search tree that immediately follows node i in the sorted order (returns NULL for max element in tree):
int Successor( Tree T, int i ) {
int j;
if( T[right][i] != NULL ) {
j = T[right][i];
while( T[left][j] != NULL ) // T[leftcolor][j] = black;
j = T[left][j];
return j;
}
j = T[parent][i];
while( T[parent][j] != NULL && j == isrightchild(T, j))
j = T[parent][j]; // T[rightcolor][j] = black;
return T[parent][j];
}
Running time in terms of the height of the tree?
How do test for being a right child?
How could this be used to delete an element from the tree?
How could this be used to sort?