Class QuadTreeNode<D,​N extends QuadTreeNode<D,​N>>

    • Constructor Detail

      • QuadTreeNode

        public QuadTreeNode()
        Empty node.
      • QuadTreeNode

        public QuadTreeNode​(Collection<D> data)
        Construct a node.
        Parameters:
        data - are initial user data
      • QuadTreeNode

        public QuadTreeNode​(D data)
        Construct a node.
        Parameters:
        data - are initial user data
      • QuadTreeNode

        public QuadTreeNode​(boolean useLinkedList)
        Constructor.
        Parameters:
        useLinkedList - indicates if a linked list must be used to store the data. If false, an ArrayList will be used.
      • QuadTreeNode

        public QuadTreeNode​(boolean useLinkedList,
                            boolean copyDataCollection,
                            List<D> data)
        Constructor.
        Parameters:
        useLinkedList - indicates if a linked list must be used to store the data. If false, an ArrayList will be used.
        copyDataCollection - indicates if the given data collection is copied if true or the inner data collection will be the given collection itself if false.
        data - are initial user data
      • QuadTreeNode

        public QuadTreeNode​(boolean useLinkedList,
                            D data)
        Constructor.
        Parameters:
        useLinkedList - indicates if a linked list must be used to store the data. If false, an ArrayList will be used.
        data - are initial user data
    • Method Detail

      • getPartitionEnumeration

        @Pure
        public Class<? extends Enum<?>> getPartitionEnumeration()
        Description copied from interface: TreeNode
        Replies the enumeration type that is defining the children of the nodes.
        Returns:
        the enumeration type of the child partition, or null if no such enumeration type is defined.
      • clear

        public void clear()
        Clear the tree.

        Caution: this method also destroyes the links between the child nodes inside the tree. If you want to unlink the first-level child node with this node but leave the rest of the tree unchanged, please call setChildAt(i,null).

      • getNotNullChildCount

        @Pure
        public int getNotNullChildCount()
        Description copied from interface: IterableNode
        Replies count of not-null children in this node.

        The number of not-null children is lower or equal to the value replied by IterableNode.getChildCount().

        Returns:
        the count of not-null children.
        See Also:
        IterableNode.getChildCount()
      • getChildAt

        @Pure
        public N getChildAt​(int index)
                     throws IndexOutOfBoundsException
        Description copied from interface: IterableNode
        Replies the n-th child in this node.
        Parameters:
        index - is the index of the child to reply
        Returns:
        the child node.
        Throws:
        IndexOutOfBoundsException - if the given index was invalid
      • getChildAt

        @Pure
        public N getChildAt​(QuadTreeNode.QuadTreeZone zone)
        Replies the node that is corresponding to the given zone.
        Parameters:
        zone - the zone.
        Returns:
        the child node for the given zone, or null.
      • setFirstChild

        public boolean setFirstChild​(N newChild)
        Set the first child of this node.
        Parameters:
        newChild - is the new child for the first zone
        Returns:
        true on success, otherwhise false
      • getFirstChild

        @Pure
        public final N getFirstChild()
        Get the first child of this node.
        Returns:
        the child for the first zone
      • setSecondChild

        public boolean setSecondChild​(N newChild)
        Set the second child of this node.
        Parameters:
        newChild - is the new child for the second zone
        Returns:
        true on success, otherwhise false
      • getSecondChild

        @Pure
        public final N getSecondChild()
        Get the second child of this node.
        Returns:
        the child for the second zone
      • setThirdChild

        public boolean setThirdChild​(N newChild)
        Set the third child of this node.
        Parameters:
        newChild - is the new child for the third zone
        Returns:
        true on success, otherwhise false
      • getThirdChild

        @Pure
        public final N getThirdChild()
        Get the third child of this node.
        Returns:
        the child for the third zone
      • setFourthChild

        public boolean setFourthChild​(N newChild)
        Set the Fourth child of this node.
        Parameters:
        newChild - is the new child for the fourth zone
        Returns:
        true on success, otherwhise false
      • getFourthChild

        @Pure
        public final N getFourthChild()
        Get the fourth child of this node.
        Returns:
        the child for the fourth zone
      • isLeaf

        @Pure
        public boolean isLeaf()
        Description copied from interface: IterableNode
        Replies if this node is a leaf.
        Returns:
        true is this node is a leaf, otherwise false
      • moveTo

        public boolean moveTo​(N newParent,
                              int index)
        Description copied from interface: TreeNode
        Move this node in the given new node.

        If any child node is already present at the given position in the new parent node, the tree node may replace the existing node or insert the moving node according to its implementation.

        This function is preferred to a sequence of calls to IterableNode.removeFromParent() and TreeNode.setChildAt(int, TreeNode) because it fires a limited set of events dedicated to the move the node.

        Parameters:
        newParent - is the new parent for this node.
        index - is the position of this node in the new parent.
        Returns:
        true on success, otherwise false.
      • moveTo

        public boolean moveTo​(N newParent,
                              QuadTreeNode.QuadTreeZone zone)
        Move this node in the given new node.

        This function is preferred to a sequence of calls to AbstractTreeNode.removeFromParent() and setChildAt(int, QuadTreeNode) because it fires a limited set of events dedicated to the move the node.

        Parameters:
        newParent - is the new parent for this node.
        zone - is the position of this node in the new parent.
        Returns:
        true on success, otherwise false.
      • setChildAt

        public boolean setChildAt​(QuadTreeNode.QuadTreeZone zone,
                                  N newChild)
        Set the child at the specified zone.
        Parameters:
        zone - is the zone to set
        newChild - is the new node for the given zone
        Returns:
        true on success, false otherwise
      • removeChild

        public boolean removeChild​(N child)
        Description copied from interface: TreeNode
        Remove the specified node from this node if it is a child.
        Parameters:
        child - is the child to remove.
        Returns:
        true if the node was removed, otherwise false
      • indexOf

        @Pure
        public int indexOf​(N child)
        Description copied from interface: TreeNode
        Replies the index of the specified child.
        Parameters:
        child - is the node to search for.
        Returns:
        the index or -1.
      • zoneOf

        @Pure
        public QuadTreeNode.QuadTreeZone zoneOf​(N child)
        Replies the zone of the specified child.
        Parameters:
        child - the child.
        Returns:
        the index or null.
      • getChildren

        public void getChildren​(Object[] array)
        Description copied from interface: TreeNode
        Replies the child nodes of this node.

        This function may put null in the array cells if the current tree node has not a child at the corresponding index.

        Parameters:
        array - is the array to fill.
        See Also:
        TreeNode.getChildren(Class), TreeNode.children()
      • getMinHeight

        @Pure
        public int getMinHeight()
        Description copied from interface: TreeNode
        Replies the minimal height of the tree.
        Returns:
        the height of the uppest leaf in the tree.
      • getMaxHeight

        @Pure
        public int getMaxHeight()
        Description copied from interface: TreeNode
        Replies the maximal height of the tree.
        Returns:
        the height of the lowest leaf in the tree.
      • getHeights

        protected void getHeights​(int currentHeight,
                                  List<Integer> heights)
        Description copied from class: AbstractParentlessTreeNode
        Replies the heights of all the leaf nodes. The order of the heights is given by a depth-first iteration.
        Specified by:
        getHeights in class AbstractParentlessTreeNode<D,​N extends QuadTreeNode<D,​N>>
        Parameters:
        currentHeight - is the current height of this node.
        heights - is the list of heights to fill