* A node that can be stored in a {@link Tree}. A node has exactly one parent
* (which is <code>null</code> if the node is the {@link Tree#getRootNode()}
* of the tree) and an arbitrary amount of child nodes.
- *
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
* @param <E>
* The type of the element to store
/**
* Returns the parent node of the node.
- *
+ *
* @return The parent node
*/
public Node<E> getParent();
/**
* Returns the element that is stored in the node.
- *
+ *
* @return The node’s element
*/
public E getElement();
/**
* Adds an element as a child to this node and returns the created node.
- *
+ *
* @param child
* The child node’s element
* @return The created child node
/**
* Returns the number of children this node has.
- *
+ *
* @return The number of children
*/
public int size();
/**
* Returns the child at the given index.
- *
+ *
* @param index
* The index of the child
* @return The child at the given index
/**
* Returns the direct child node that contains the given element.
- *
+ *
* @param element
* The element
* @return The direct child node containing the given element, or
/**
* Returns whether the given node is a direct child of this node.
- *
+ *
* @param childNode
* The child node
* @return <code>true</code> if the given node is a direct child of this
/**
* Returns whether this node contains a child node containing the given
* element.
- *
+ *
* @param element
* The element
* @return <code>true</code> if this node contains a direct child node
/**
* Returns the index of the given child node.
- *
+ *
* @param childNode
* The child node
* @return The index of the child node, or <code>-1</code> if the child
/**
* Returns the index of the child node containing the given element.
- *
+ *
* @param element
* The element
* @return The index of the child node, or <code>-1</code> if the child
/**
* Remove the given child node from this node. If the given node is not a
* child of this node, nothing happens.
- *
+ *
* @param childNode
* The child node to remove
*/
/**
* Removes the child node that contains the given element. The element in
* the node is checked using {@link Object#equals(Object)}.
- *
+ *
* @param child
* The child element to remove
*/
/**
* Removes the child at the given index.
- *
+ *
* @param childIndex
* The index of the child to remove
*/
/**
* Searches this node’s children recursively for a node that contains the
* given element.
- *
+ *
* @param element
* The element to search
* @return The node that contains the given element, or <code>null</code>
/**
* Sorts all children with the given comparator.
- *
+ *
* @param comparator
* The comparator used to sort the children
*/