/** @return les noeuds représentant les cases voisines en dessous */
 public List<QuadTreeNodeInterface<E>> getBottomNeighbors() {
   QuadTreeNodeInterface<E> sibling = this.getBottomSibling();
   if (sibling == null) {
     return new ArrayList<QuadTreeNodeInterface<E>>();
   }
   return sibling.getTopChildren();
 }
 /** @return les noeuds représentant les cases voisines à droite */
 public List<QuadTreeNodeInterface<E>> getLeftNeighbors() {
   QuadTreeNodeInterface<E> sibling = this.getLeftSibling();
   if (sibling == null) {
     return new ArrayList<QuadTreeNodeInterface<E>>();
   }
   return sibling.getRightChildren();
 }
 /** @return le nombre de nodes contenues dans celle-ci, celle-ci comprise */
 public int getNodesCount() {
   int total = 1; // this
   if (children != null) {
     for (QuadTreeNodeInterface<E> child : children) {
       total += child.getNodesCount();
     }
   }
   return total;
 }
 /** @return Le nombre d'éléments dans cette node et ses enfants. */
 public int size() {
   if (this.children == null) {
     return elements.size();
   } else {
     int size = elements.size();
     for (QuadTreeNodeInterface<E> child : children) {
       size += child.size();
     }
     return size;
   }
 }
 /** Vide les listes contenant les éléments et met à <code>null</code> toutes les nodes enfant */
 public void clear() {
   if (children != null) {
     for (QuadTreeNodeInterface<E> child : children) {
       child.clear();
     }
     children = null;
   }
   // if (elements != null)
   // {
   elements.clear();
   // }
 }
  /**
   * @param other
   * @return <code>true</code> if this node contains the <code>other</code> node
   */
  public boolean contains(QuadTreeNodeInterface<E> other) {
    QuadTreeNodeInterface<E> parent = other;

    while (parent != this) {
      // si root node
      if (parent == parent.getParent()) {
        return false;
      }
      // on monte d'un niveau
      parent = parent.getParent();
    }

    return true;
  }
 /** @return true si cette node ne contient aucun élément */
 public boolean isEmpty() {
   if (children == null) {
     return elements.isEmpty();
   } else
   // des nodes pourraient exister mais être vides -> vérifer que chaque node est vide
   {
     boolean ret = true;
     for (QuadTreeNodeInterface<E> child : children) {
       ret &= child.isEmpty();
       if (!ret) {
         break;
       }
     }
     return ret;
   }
 }