Class ShortBigList.ShortBlockNode
java.lang.Object
org.magicwerk.brownies.collections.primitive.ShortBigList.ShortBlockNode
- Enclosing class:
ShortBigList
Implements an AVLNode storing a ShortBlock.
The nodes don't know the index of the object they are holding. They do know however their
position relative to their parent node. This allows to calculate the index of a node while traversing the tree.
There is a faedelung flag for both the left and right child
to indicate if they are a child (false) or a link as in linked list (true).
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) ShortBigList.ShortBlockThe stored block(package private) intHow many levels of left/right are below this one.(package private) ShortBigList.ShortBlockNodeThe left child node or the predecessor ifleftIsPrevious.(package private) booleanFlag indicating that left reference is not a subtree but the predecessor.(package private) ShortBigList.ShortBlockNodePointer to parent node (null for root)(package private) intRelative position of node relative to its parent, root holds absolute position.(package private) ShortBigList.ShortBlockNodeThe right child node or the successor ifrightIsNext.(package private) booleanFlag indicating that right reference is not a subtree but the successor. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateShortBlockNode(ShortBigList.ShortBlockNode parent, int relPos, ShortBigList.ShortBlock block, ShortBigList.ShortBlockNode rightFollower, ShortBigList.ShortBlockNode leftFollower) Constructs a new node. -
Method Summary
Modifier and TypeMethodDescriptionprivate ShortBigList.ShortBlockNodebalance()Balances according to the AVL algorithm.private ShortBigList.ShortBlockNodeprivate intReturns the height of the node or -1 if the node is null.private ShortBigList.ShortBlockNodeGets the left node, returning null if its a faedelung.private intGets the relative position.private ShortBigList.ShortBlockNodeGets the right node, returning null if its a faedelung.private ShortBigList.ShortBlockGets the block stored by this node.private intReturns the height difference right - leftprivate ShortBigList.ShortBlockNodeinsert(int index, ShortBigList.ShortBlock obj) Inserts new node holding specified block at the position index.private ShortBigList.ShortBlockNodeinsertOnLeft(int relIndex, ShortBigList.ShortBlock obj) Inserts new node holding specified block on the node's left side.private ShortBigList.ShortBlockNodeinsertOnRight(int relIndex, ShortBigList.ShortBlock obj) Inserts new node holding specified block on the node's right side.private ShortBigList.ShortBlockNodemax()Gets the rightmost child of this node.private ShortBigList.ShortBlockNodemin()Gets the leftmost child of this node.private ShortBigList.ShortBlockNodenext()Gets the next node in the list after this one.private ShortBigList.ShortBlockNodeprevious()Gets the node in the list before this one.private voidSets the height by calculation.private ShortBigList.ShortBlockNodeprivate ShortBigList.ShortBlockNoderemoveMin(int size) private ShortBigList.ShortBlockNodeRemoves this node from the tree.private ShortBigList.ShortBlockNodeRotate tree to the left using this node as center.private ShortBigList.ShortBlockNodeRotate tree to the right using this node as center.private voidsetLeft(ShortBigList.ShortBlockNode node, ShortBigList.ShortBlockNode previous) Sets the left field to the node, or the previous node if that is nullprivate intsetOffset(ShortBigList.ShortBlockNode node, int newOffest) Sets the relative position.private voidSets the right field to the node, or the next node if that is nullprivate voidSets block to store by this node.toString()Used for debugging.
-
Field Details
-
parent
ShortBigList.ShortBlockNode parentPointer to parent node (null for root) -
left
The left child node or the predecessor ifleftIsPrevious. -
leftIsPrevious
boolean leftIsPreviousFlag indicating that left reference is not a subtree but the predecessor. -
right
The right child node or the successor ifrightIsNext. -
rightIsNext
boolean rightIsNextFlag indicating that right reference is not a subtree but the successor. -
height
int heightHow many levels of left/right are below this one. -
relPos
int relPosRelative position of node relative to its parent, root holds absolute position. -
block
ShortBigList.ShortBlock blockThe stored block
-
-
Constructor Details
-
ShortBlockNode
private ShortBlockNode(ShortBigList.ShortBlockNode parent, int relPos, ShortBigList.ShortBlock block, ShortBigList.ShortBlockNode rightFollower, ShortBigList.ShortBlockNode leftFollower) Constructs a new node.- Parameters:
parent- parent node (null for root)block- the block to storerightFollower- the node following this oneleftFollower- the node leading this onerelativePosition- the relative position of the node (absolute position for root)
-
-
Method Details
-
getShortBlock
Gets the block stored by this node.- Returns:
- block stored by this node
-
setShortBlock
Sets block to store by this node.- Parameters:
block- the block to store
-
next
Gets the next node in the list after this one.- Returns:
- the next node
-
previous
Gets the node in the list before this one.- Returns:
- the previous node
-
insert
Inserts new node holding specified block at the position index.- Parameters:
index- index of the position relative to the position of the parent nodeobj- object to store in the position- Returns:
- this node or node replacing this node in the tree (if tree must be rebalanced)
-
insertOnLeft
Inserts new node holding specified block on the node's left side.- Parameters:
obj- object to store in the positionindex- index of the position relative to the position of the parent node- Returns:
- this node or node replacing this node in the tree (if tree must be rebalanced)
-
insertOnRight
Inserts new node holding specified block on the node's right side.- Parameters:
obj- object to store in the positionindex- index of the position relative to the position of the parent node- Returns:
- this node or node replacing this node in the tree (if tree must be rebalanced)
-
getLeftSubTree
Gets the left node, returning null if its a faedelung. -
getRightSubTree
Gets the right node, returning null if its a faedelung. -
max
Gets the rightmost child of this node.- Returns:
- the rightmost child (greatest index)
-
min
Gets the leftmost child of this node.- Returns:
- the leftmost child (smallest index)
-
removeMax
-
removeMin
-
removeSelf
Removes this node from the tree.- Returns:
- the node that replaces this one in the parent (can be null)
-
doRemoveSelf
-
balance
Balances according to the AVL algorithm. -
getOffset
Gets the relative position. -
setOffset
Sets the relative position. -
recalcHeight
private void recalcHeight()Sets the height by calculation. -
getHeight
Returns the height of the node or -1 if the node is null. -
heightRightMinusLeft
private int heightRightMinusLeft()Returns the height difference right - left -
rotateLeft
Rotate tree to the left using this node as center.- Returns:
- node which will take the place of this node
-
rotateRight
Rotate tree to the right using this node as center.- Returns:
- node which will take the place of this node
-
setLeft
Sets the left field to the node, or the previous node if that is null- Parameters:
node- the new left subtree nodeprevious- the previous node in the linked list
-
setRight
Sets the right field to the node, or the next node if that is null- Parameters:
node- the new right subtree nodenext- the next node in the linked list
-
toString
Used for debugging.
-