Case 1: Node to be delete has no child - Delete the node.
Case 2: Node to be deleted has one child - Delete the node, make the child of this node as the child of the parent node.
Case 3: Node to be deleted has two children - Find the predecessor (or successor) of the node to be deleted. Replace this predecessor(or successor) with the deleted node. Delete the predecessor (or the successor) which would have at-most 1 child (because it is predecessor or successor) and thus delete this child as Case -2 (delete with one child)