private SimpleNode findNodeABRI(SimpleNode node, final int value) {

        SimpleNode ret = null;

        if (this.root == null) {
            throw new RuntimeException("Le noeud [" + this.min + "; " + this.max + "] est vide et ne contient donc pas " + value + " !");
        }
        if (node == null) {
            throw new RuntimeException("Le noeud à rechercher ne peut pas être nul !");
        } else if (value < node.getValue()) { // Si la valeur est inférieure à la valeur du noeud courant, on recherche dans le fils droit

            if (node.getRightSon() != null) {
                ret = findNodeABRI((SimpleNode) node.getRightSon(), value);
            }

        } else if (value > node.getValue()) { // Si la valeur est supérieure à la valeur du noeud courant, on recherche dans le fils gauche

            if (node.getLeftSon() != null) {
                ret = findNodeABRI((SimpleNode) node.getLeftSon(), value);
            }

        } else if (value == node.getValue()) {
            ret = node;
        }
        return ret;
    }