Class ShortBigList.ShortBlockNode
- java.lang.Object
-
- org.magicwerk.brownies.collections.primitive.ShortBigList.ShortBlockNode
-
- Enclosing class:
- ShortBigList
static class ShortBigList.ShortBlockNode extends java.lang.Object
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
Fields Modifier and Type Field Description (package private) ShortBigList.ShortBlock
block
The stored block(package private) int
height
How many levels of left/right are below this one.(package private) ShortBigList.ShortBlockNode
left
The left child node or the predecessor ifleftIsPrevious
.(package private) boolean
leftIsPrevious
Flag indicating that left reference is not a subtree but the predecessor.(package private) ShortBigList.ShortBlockNode
parent
Pointer to parent node (null for root)(package private) int
relPos
Relative position of node relative to its parent, root holds absolute position.(package private) ShortBigList.ShortBlockNode
right
The right child node or the successor ifrightIsNext
.(package private) boolean
rightIsNext
Flag indicating that right reference is not a subtree but the successor.
-
Constructor Summary
Constructors Modifier Constructor Description private
ShortBlockNode(ShortBigList.ShortBlockNode parent, int relPos, ShortBigList.ShortBlock block, ShortBigList.ShortBlockNode rightFollower, ShortBigList.ShortBlockNode leftFollower)
Constructs a new node.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private ShortBigList.ShortBlockNode
balance()
Balances according to the AVL algorithm.private ShortBigList.ShortBlockNode
doRemoveSelf()
private int
getHeight(ShortBigList.ShortBlockNode node)
Returns the height of the node or -1 if the node is null.private ShortBigList.ShortBlockNode
getLeftSubTree()
Gets the left node, returning null if its a faedelung.private int
getOffset(ShortBigList.ShortBlockNode node)
Gets the relative position.private ShortBigList.ShortBlockNode
getRightSubTree()
Gets the right node, returning null if its a faedelung.private ShortBigList.ShortBlock
getShortBlock()
Gets the block stored by this node.private int
heightRightMinusLeft()
Returns the height difference right - leftprivate ShortBigList.ShortBlockNode
insert(int index, ShortBigList.ShortBlock obj)
Inserts new node holding specified block at the position index.private ShortBigList.ShortBlockNode
insertOnLeft(int relIndex, ShortBigList.ShortBlock obj)
Inserts new node holding specified block on the node's left side.private ShortBigList.ShortBlockNode
insertOnRight(int relIndex, ShortBigList.ShortBlock obj)
Inserts new node holding specified block on the node's right side.private ShortBigList.ShortBlockNode
max()
Gets the rightmost child of this node.private ShortBigList.ShortBlockNode
min()
Gets the leftmost child of this node.private ShortBigList.ShortBlockNode
next()
Gets the next node in the list after this one.private ShortBigList.ShortBlockNode
previous()
Gets the node in the list before this one.private void
recalcHeight()
Sets the height by calculation.private ShortBigList.ShortBlockNode
removeMax()
private ShortBigList.ShortBlockNode
removeMin(int size)
private ShortBigList.ShortBlockNode
removeSelf()
Removes this node from the tree.private ShortBigList.ShortBlockNode
rotateLeft()
Rotate tree to the left using this node as center.private ShortBigList.ShortBlockNode
rotateRight()
Rotate tree to the right using this node as center.private void
setLeft(ShortBigList.ShortBlockNode node, ShortBigList.ShortBlockNode previous)
Sets the left field to the node, or the previous node if that is nullprivate int
setOffset(ShortBigList.ShortBlockNode node, int newOffest)
Sets the relative position.private void
setRight(ShortBigList.ShortBlockNode node, ShortBigList.ShortBlockNode next)
Sets the right field to the node, or the next node if that is nullprivate void
setShortBlock(ShortBigList.ShortBlock block)
Sets block to store by this node.java.lang.String
toString()
Used for debugging.
-
-
-
Field Detail
-
parent
ShortBigList.ShortBlockNode parent
Pointer to parent node (null for root)
-
left
ShortBigList.ShortBlockNode left
The left child node or the predecessor ifleftIsPrevious
.
-
leftIsPrevious
boolean leftIsPrevious
Flag indicating that left reference is not a subtree but the predecessor.
-
right
ShortBigList.ShortBlockNode right
The right child node or the successor ifrightIsNext
.
-
rightIsNext
boolean rightIsNext
Flag indicating that right reference is not a subtree but the successor.
-
height
int height
How many levels of left/right are below this one.
-
relPos
int relPos
Relative position of node relative to its parent, root holds absolute position.
-
block
ShortBigList.ShortBlock block
The stored block
-
-
Constructor Detail
-
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)relativePosition
- the relative position of the node (absolute position for root)block
- the block to storerightFollower
- the node following this oneleftFollower
- the node leading this one
-
-
Method Detail
-
getShortBlock
private ShortBigList.ShortBlock getShortBlock()
Gets the block stored by this node.- Returns:
- block stored by this node
-
setShortBlock
private void setShortBlock(ShortBigList.ShortBlock block)
Sets block to store by this node.- Parameters:
block
- the block to store
-
next
private ShortBigList.ShortBlockNode next()
Gets the next node in the list after this one.- Returns:
- the next node
-
previous
private ShortBigList.ShortBlockNode previous()
Gets the node in the list before this one.- Returns:
- the previous node
-
insert
private ShortBigList.ShortBlockNode insert(int index, ShortBigList.ShortBlock obj)
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
private ShortBigList.ShortBlockNode insertOnLeft(int relIndex, ShortBigList.ShortBlock obj)
Inserts new node holding specified block on the node's left side.- 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)
-
insertOnRight
private ShortBigList.ShortBlockNode insertOnRight(int relIndex, ShortBigList.ShortBlock obj)
Inserts new node holding specified block on the node's right side.- 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)
-
getLeftSubTree
private ShortBigList.ShortBlockNode getLeftSubTree()
Gets the left node, returning null if its a faedelung.
-
getRightSubTree
private ShortBigList.ShortBlockNode getRightSubTree()
Gets the right node, returning null if its a faedelung.
-
max
private ShortBigList.ShortBlockNode max()
Gets the rightmost child of this node.- Returns:
- the rightmost child (greatest index)
-
min
private ShortBigList.ShortBlockNode min()
Gets the leftmost child of this node.- Returns:
- the leftmost child (smallest index)
-
removeMax
private ShortBigList.ShortBlockNode removeMax()
-
removeMin
private ShortBigList.ShortBlockNode removeMin(int size)
-
removeSelf
private ShortBigList.ShortBlockNode removeSelf()
Removes this node from the tree.- Returns:
- the node that replaces this one in the parent (can be null)
-
doRemoveSelf
private ShortBigList.ShortBlockNode doRemoveSelf()
-
balance
private ShortBigList.ShortBlockNode balance()
Balances according to the AVL algorithm.
-
getOffset
private int getOffset(ShortBigList.ShortBlockNode node)
Gets the relative position.
-
setOffset
private int setOffset(ShortBigList.ShortBlockNode node, int newOffest)
Sets the relative position.
-
recalcHeight
private void recalcHeight()
Sets the height by calculation.
-
getHeight
private int getHeight(ShortBigList.ShortBlockNode node)
Returns the height of the node or -1 if the node is null.
-
heightRightMinusLeft
private int heightRightMinusLeft()
Returns the height difference right - left
-
rotateLeft
private ShortBigList.ShortBlockNode rotateLeft()
Rotate tree to the left using this node as center.- Returns:
- node which will take the place of this node
-
rotateRight
private ShortBigList.ShortBlockNode rotateRight()
Rotate tree to the right using this node as center.- Returns:
- node which will take the place of this node
-
setLeft
private void setLeft(ShortBigList.ShortBlockNode node, ShortBigList.ShortBlockNode previous)
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
private void setRight(ShortBigList.ShortBlockNode node, ShortBigList.ShortBlockNode next)
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
public java.lang.String toString()
Used for debugging.- Overrides:
toString
in classjava.lang.Object
-
-