Package org.arakhne.afc.math.tree.node
Class IcosepBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>
- java.lang.Object
-
- org.arakhne.afc.math.tree.node.AbstractParentlessTreeNode<D,N>
-
- org.arakhne.afc.math.tree.node.AbstractTreeNode<D,N>
-
- org.arakhne.afc.math.tree.node.BinaryTreeNode<D,N>
-
- org.arakhne.afc.math.tree.node.IcosepBinaryTreeNode<D,N>
-
- Type Parameters:
D- is the type of the data inside the treeN- is the type of the tree nodes.
- All Implemented Interfaces:
Serializable,Comparable<N>,IcosepTreeNodeContainer<N>,IterableNode<N>,TreeNode<D,N>,JsonableObject
- Direct Known Subclasses:
IcosepBinaryTreeNode.DefaultIcosepBinaryTreeNode
public abstract class IcosepBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>> extends BinaryTreeNode<D,N> implements IcosepTreeNodeContainer<N>
This is the generic implementation of a tree for which each node has two children and that implements the Icosep heuristic.The icosep heuristic implies that all objects that intersect the split lines will be stored inside an addition child that contains only the corresponding objects.
- Since:
- 13.0
- Version:
- 17.0 2020-01-04 14:41:41
- Author:
- Stéphane GALLAND
- See Also:
- Serialized Form
- Maven Group Id:
- org.arakhne.afc.core
- Maven Artifact Id:
- mathtree
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classIcosepBinaryTreeNode.DefaultIcosepBinaryTreeNode<D>This is the generic implementation of a quad tree with icosep heuristic.static classIcosepBinaryTreeNode.IcosepBinaryTreeZoneThis is the generic implementation of a tree for which each node has two children.-
Nested classes/interfaces inherited from class org.arakhne.afc.math.tree.node.BinaryTreeNode
BinaryTreeNode.BinaryTreeZone, BinaryTreeNode.DefaultBinaryTreeNode<D>
-
-
Field Summary
-
Fields inherited from class org.arakhne.afc.math.tree.node.AbstractParentlessTreeNode
DEFAULT_COPY_USER_DATA, DEFAULT_LINK_LIST_USE, nodeListeners, notNullChildCount
-
-
Constructor Summary
Constructors Constructor Description IcosepBinaryTreeNode()Empty node.IcosepBinaryTreeNode(boolean useLinkedList)Construct node.IcosepBinaryTreeNode(boolean useLinkedList, boolean copyDataCollection, List<D> data)Construct node.IcosepBinaryTreeNode(boolean useLinkedList, D data)Construct node.IcosepBinaryTreeNode(D data)Construct node.IcosepBinaryTreeNode(Collection<D> data)Construct node.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()Clear the tree.NgetChildAt(int index)Replies the n-th child in this node.NgetChildAt(IcosepBinaryTreeNode.IcosepBinaryTreeZone zone)Replies the node that is corresponding to the given zone.intgetChildCount()Replies count of children in this node.voidgetChildren(Object[] array)Replies the child nodes of this node.protected voidgetHeights(int currentHeight, List<Integer> heights)Replies the heights of all the leaf nodes.NgetIcosepChild()Get the icosep node of this node.intgetMaxHeight()Replies the maximal height of the tree.intgetMinHeight()Replies the minimal height of the tree.Class<? extends Enum<?>>getPartitionEnumeration()Replies the enumeration type that is defining the children of the nodes.intindexOf(N child)Replies the index of the specified child.booleanisLeaf()Replies if this node is a leaf.booleanremoveChild(N child)Remove the specified node from this node if it is a child.booleansetChildAt(int index, N newChild)Set the n-th child in this node.protected voidsetChildAtWithoutEventFiring(int index, N newChild)Invoked by the inner classes to set the child at the given index without firing the events.booleansetIcosepChild(N newChild)Set the icosep child of this node.-
Methods inherited from class org.arakhne.afc.math.tree.node.BinaryTreeNode
getChildAt, getLeftChild, getNotNullChildCount, getRightChild, moveTo, setChildAt, setLeftChild, setRightChild
-
Methods inherited from class org.arakhne.afc.math.tree.node.AbstractTreeNode
children, firePropertyChildAdded, firePropertyChildAdded, firePropertyChildRemoved, firePropertyChildRemoved, firePropertyParentChanged, firePropertyParentChanged, firePropertyParentChanged, getChildren, getDepth, getParentNode, isRoot, moveTo, removeDeeplyFromParent, removeFromParent, setParentNodeReference
-
Methods inherited from class org.arakhne.afc.math.tree.node.AbstractParentlessTreeNode
addTreeNodeListener, addUserData, addUserData, addUserData, addUserData, compareTo, firePropertyDataChanged, firePropertyDataChanged, firePropertyDataChanged, getAllUserData, getAllUserData, getDeepNodeCount, getDeepUserDataCount, getHeights, getInternalDataStructureForUserData, getUserData, getUserDataAt, getUserDataCount, isEmpty, isValid, removeAllUserData, removeTreeNodeListener, removeUserData, removeUserData, removeUserData, setUserData, setUserData, setUserDataAt, toJson, toN, toString
-
-
-
-
Constructor Detail
-
IcosepBinaryTreeNode
public IcosepBinaryTreeNode()
Empty node.
-
IcosepBinaryTreeNode
public IcosepBinaryTreeNode(Collection<D> data)
Construct node.- Parameters:
data- are the initial user data
-
IcosepBinaryTreeNode
public IcosepBinaryTreeNode(D data)
Construct node.- Parameters:
data- are the initial user data
-
IcosepBinaryTreeNode
public IcosepBinaryTreeNode(boolean useLinkedList)
Construct node.- Parameters:
useLinkedList- indicates if a linked list must be used to store the data. Iffalse, an ArrayList will be used.
-
IcosepBinaryTreeNode
public IcosepBinaryTreeNode(boolean useLinkedList, boolean copyDataCollection, List<D> data)Construct node.- Parameters:
useLinkedList- indicates if a linked list must be used to store the data. Iffalse, an ArrayList will be used.copyDataCollection- indicates if the given data collection is copied iftrueor the inner data collection will be the given collection itself iffalse.data- are the initial user data
-
IcosepBinaryTreeNode
public IcosepBinaryTreeNode(boolean useLinkedList, D data)Construct node.- Parameters:
useLinkedList- indicates if a linked list must be used to store the data. Iffalse, an ArrayList will be used.data- are the initial user data
-
-
Method Detail
-
getPartitionEnumeration
@Pure public Class<? extends Enum<?>> getPartitionEnumeration()
Description copied from interface:TreeNodeReplies the enumeration type that is defining the children of the nodes.- Specified by:
getPartitionEnumerationin interfaceTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Overrides:
getPartitionEnumerationin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Returns:
- the enumeration type of the child partition,
or
nullif 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).- Specified by:
clearin interfaceTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Overrides:
clearin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>
-
getChildCount
@Pure public int getChildCount()
Description copied from interface:IterableNodeReplies count of children in this node.The number of children is greater or equal to the value replied by
IterableNode.getNotNullChildCount().- Specified by:
getChildCountin interfaceIterableNode<D>- Overrides:
getChildCountin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Returns:
- the count of children.
- See Also:
IterableNode.getNotNullChildCount()
-
getChildAt
@Pure public N getChildAt(int index) throws IndexOutOfBoundsException
Description copied from interface:IterableNodeReplies the n-th child in this node.- Specified by:
getChildAtin interfaceIterableNode<D>- Overrides:
getChildAtin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- 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(IcosepBinaryTreeNode.IcosepBinaryTreeZone 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
-
setIcosepChild
public boolean setIcosepChild(N newChild)
Description copied from interface:IcosepTreeNodeContainerSet the icosep child of this node.- Specified by:
setIcosepChildin interfaceIcosepTreeNodeContainer<D>- Parameters:
newChild- is the new child used as the icosep branch- Returns:
trueon success, otherwisefalse
-
getIcosepChild
@Pure public N getIcosepChild()
Description copied from interface:IcosepTreeNodeContainerGet the icosep node of this node.- Specified by:
getIcosepChildin interfaceIcosepTreeNodeContainer<D>- Returns:
- the node that is used as the icosep branch.
-
isLeaf
@Pure public boolean isLeaf()
Description copied from interface:IterableNodeReplies if this node is a leaf.- Specified by:
isLeafin interfaceIterableNode<D>- Overrides:
isLeafin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Returns:
trueis this node is a leaf, otherwisefalse
-
setChildAt
public boolean setChildAt(int index, N newChild) throws IndexOutOfBoundsExceptionDescription copied from interface:TreeNodeSet the n-th child in this node.- Specified by:
setChildAtin interfaceTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Overrides:
setChildAtin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Parameters:
index- is the index of the child to replynewChild- is the new child node.- Returns:
trueif it was set, otherwisefalse- Throws:
IndexOutOfBoundsException- if the given index was invalid
-
setChildAtWithoutEventFiring
protected void setChildAtWithoutEventFiring(int index, N newChild) throws IndexOutOfBoundsExceptionDescription copied from class:AbstractTreeNodeInvoked by the inner classes to set the child at the given index without firing the events. This function should never invokeAbstractTreeNode.setParentNodeReference(AbstractTreeNode, boolean).- Overrides:
setChildAtWithoutEventFiringin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Parameters:
index- is the position of the new child.newChild- is the new child- Throws:
IndexOutOfBoundsException- if the index is invalid.
-
removeChild
public boolean removeChild(N child)
Description copied from interface:TreeNodeRemove the specified node from this node if it is a child.- Specified by:
removeChildin interfaceTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Overrides:
removeChildin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Parameters:
child- is the child to remove.- Returns:
trueif the node was removed, otherwisefalse
-
indexOf
@Pure public int indexOf(N child)
Description copied from interface:TreeNodeReplies the index of the specified child.- Specified by:
indexOfin interfaceTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Overrides:
indexOfin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Parameters:
child- is the node to search for.- Returns:
- the index or
-1.
-
getChildren
public void getChildren(Object[] array)
Description copied from interface:TreeNodeReplies the child nodes of this node.This function may put
nullin the array cells if the current tree node has not a child at the corresponding index.- Specified by:
getChildrenin interfaceTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Overrides:
getChildrenin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Parameters:
array- is the array to fill.- See Also:
TreeNode.getChildren(Class),TreeNode.children()
-
getMinHeight
@Pure public int getMinHeight()
Description copied from interface:TreeNodeReplies the minimal height of the tree.- Specified by:
getMinHeightin interfaceTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Overrides:
getMinHeightin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Returns:
- the height of the uppest leaf in the tree.
-
getMaxHeight
@Pure public int getMaxHeight()
Description copied from interface:TreeNodeReplies the maximal height of the tree.- Specified by:
getMaxHeightin interfaceTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Overrides:
getMaxHeightin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Returns:
- the height of the lowest leaf in the tree.
-
getHeights
protected void getHeights(int currentHeight, List<Integer> heights)Description copied from class:BinaryTreeNodeReplies the heights of all the leaf nodes. The order of the heights is given by a depth-first iteration.- Overrides:
getHeightsin classBinaryTreeNode<D,N extends IcosepBinaryTreeNode<D,N>>- Parameters:
currentHeight- is the current height of this node.heights- is the list of heights to fill
-
-