There are 3 scenarios for delete/remove:
1) Node has no children, you simply remove it and the pointers pointing to it.
2) Node has one child, you adjust the pointers from it's child and it's parent.
3) Node has two children, in this situation you can either find the next element closest to it from the left or from the right.
- For example if you want next largest, go to it's right child and then keep going left until you reach a node that has no left children. That will be the one to replace the node you're deleting. What you want to do is handle pointers on the node that's replacing, in case it has children itself etc, then simply put it's data into the node you want to remove.
Hope this helps,
Kon