+ if (value == currentNode.getData()) {
+ if (currentNode.getLeftNode() == null && currentNode.getRightNode() == null) {
+ return null;
+ } else if (currentNode.getRightNode() == null) {
+ return currentNode.getLeftNode();
+ } else if (currentNode.getLeftNode() == null) {
+ return currentNode.getRightNode();
+ } else {
+ /*
+ * First, we need to find the node that will replace the deleted node.
+ * We’ll use the smallest node of the node to be deleted’s right sub-tree.
+ * Then, we assign the smallest value to the node to delete and after that,
+ * we’ll delete it from the right subtree.
+ */
+ int smallestValue = findSmallestData(currentNode.getRightNode());
+ currentNode.setData(smallestValue);
+ currentNode.setRightNode(supprimer_rec(currentNode.getRightNode(), smallestValue));
+ return currentNode;
+ }
+ } else if (value < currentNode.getData()) {
+ currentNode.setLeftNode(supprimer_rec(currentNode.getLeftNode(), value));
+ } else {
+ currentNode.setRightNode(supprimer_rec(currentNode.getRightNode(), value));