/** @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; } }