Class AbstractMTreeNode<O,​N extends AbstractMTreeNode<O,​N,​E>,​E extends MTreeEntry>

  • Type Parameters:
    O - the type of DatabaseObject to be stored in the M-Tree
    N - the type of AbstractMTreeNode used in the M-Tree
    E - the type of MetricalEntry used in the M-Tree
    All Implemented Interfaces:
    Node<E>, Page, java.io.Externalizable, java.io.Serializable
    Direct Known Subclasses:
    MkAppTreeNode, MkCoPTreeNode, MkMaxTreeNode, MkTabTreeNode, MTreeNode

    public abstract class AbstractMTreeNode<O,​N extends AbstractMTreeNode<O,​N,​E>,​E extends MTreeEntry>
    extends AbstractNode<E>
    Abstract super class for nodes in M-Tree variants.
    Since:
    0.1
    Author:
    Elke Achtert
    See Also:
    Serialized Form
    • Constructor Detail

      • AbstractMTreeNode

        public AbstractMTreeNode()
        Empty constructor for Externalizable interface.
      • AbstractMTreeNode

        public AbstractMTreeNode​(int capacity,
                                 boolean isLeaf)
        Creates a new MTreeNode with the specified parameters.
        Parameters:
        capacity - the capacity (maximum number of entries plus 1 for overflow) of this node
        isLeaf - indicates whether this node is a leaf node
    • Method Detail

      • adjustEntry

        public boolean adjustEntry​(E entry,
                                   DBID routingObjectID,
                                   double parentDistance,
                                   AbstractMTree<O,​N,​E,​?> mTree)
        Adjusts the parameters of the entry representing this node (e.g., after insertion of new objects). Subclasses may need to overwrite this method.
        Parameters:
        entry - the entry representing this node
        routingObjectID - the id of the (new) routing object of this node
        parentDistance - the distance from the routing object of this node to the routing object of the parent node
        mTree - the M-Tree object holding this node
        Returns:
        true if adjustment of parent is needed
      • coveringRadiusFromEntries

        public double coveringRadiusFromEntries​(DBID routingObjectID,
                                                AbstractMTree<O,​N,​E,​?> mTree)
        Determines and returns the covering radius of this node.
        Parameters:
        routingObjectID - the object id of the routing object of this node
        mTree - the M-Tree
        Returns:
        the covering radius of this node
      • integrityCheck

        protected final void integrityCheck​(AbstractMTree<O,​N,​E,​?> mTree,
                                            E entry)
        Tests this node (for debugging purposes).
        Parameters:
        mTree - the M-Tree holding this node
        entry - the entry representing this node
      • integrityCheckParameters

        protected void integrityCheckParameters​(E parentEntry,
                                                N parent,
                                                int index,
                                                AbstractMTree<O,​N,​E,​?> mTree)
        Tests, if the parameters of the entry representing this node, are correctly set. Subclasses may need to overwrite this method.
        Parameters:
        parentEntry - the entry representing the parent
        parent - the parent holding the entry representing this node
        index - the index of the entry in the parents child arry
        mTree - the M-Tree holding this node