Class BooleanBigList.BooleanBlockNode
- java.lang.Object
-
- org.magicwerk.brownies.collections.primitive.BooleanBigList.BooleanBlockNode
-
- Enclosing class:
- BooleanBigList
static class BooleanBigList.BooleanBlockNode extends java.lang.ObjectImplements an AVLNode storing a BooleanBlock. 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) BooleanBigList.BooleanBlockblockThe stored block(package private) intheightHow many levels of left/right are below this one.(package private) BooleanBigList.BooleanBlockNodeleftThe left child node or the predecessor ifleftIsPrevious.(package private) booleanleftIsPreviousFlag indicating that left reference is not a subtree but the predecessor.(package private) BooleanBigList.BooleanBlockNodeparentPointer to parent node (null for root)(package private) intrelPosRelative position of node relative to its parent, root holds absolute position.(package private) BooleanBigList.BooleanBlockNoderightThe right child node or the successor ifrightIsNext.(package private) booleanrightIsNextFlag indicating that right reference is not a subtree but the successor.
-
Constructor Summary
Constructors Modifier Constructor Description privateBooleanBlockNode(BooleanBigList.BooleanBlockNode parent, int relPos, BooleanBigList.BooleanBlock block, BooleanBigList.BooleanBlockNode rightFollower, BooleanBigList.BooleanBlockNode leftFollower)Constructs a new node.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private BooleanBigList.BooleanBlockNodebalance()Balances according to the AVL algorithm.private BooleanBigList.BooleanBlockNodedoRemoveSelf()private BooleanBigList.BooleanBlockgetBooleanBlock()Gets the block stored by this node.private intgetHeight(BooleanBigList.BooleanBlockNode node)Returns the height of the node or -1 if the node is null.private BooleanBigList.BooleanBlockNodegetLeftSubTree()Gets the left node, returning null if its a faedelung.private intgetOffset(BooleanBigList.BooleanBlockNode node)Gets the relative position.private BooleanBigList.BooleanBlockNodegetRightSubTree()Gets the right node, returning null if its a faedelung.private intheightRightMinusLeft()Returns the height difference right - leftprivate BooleanBigList.BooleanBlockNodeinsert(int index, BooleanBigList.BooleanBlock obj)Inserts new node holding specified block at the position index.private BooleanBigList.BooleanBlockNodeinsertOnLeft(int relIndex, BooleanBigList.BooleanBlock obj)Inserts new node holding specified block on the node's left side.private BooleanBigList.BooleanBlockNodeinsertOnRight(int relIndex, BooleanBigList.BooleanBlock obj)Inserts new node holding specified block on the node's right side.private BooleanBigList.BooleanBlockNodemax()Gets the rightmost child of this node.private BooleanBigList.BooleanBlockNodemin()Gets the leftmost child of this node.private BooleanBigList.BooleanBlockNodenext()Gets the next node in the list after this one.private BooleanBigList.BooleanBlockNodeprevious()Gets the node in the list before this one.private voidrecalcHeight()Sets the height by calculation.private BooleanBigList.BooleanBlockNoderemoveMax()private BooleanBigList.BooleanBlockNoderemoveMin(int size)private BooleanBigList.BooleanBlockNoderemoveSelf()Removes this node from the tree.private BooleanBigList.BooleanBlockNoderotateLeft()Rotate tree to the left using this node as center.private BooleanBigList.BooleanBlockNoderotateRight()Rotate tree to the right using this node as center.private voidsetBooleanBlock(BooleanBigList.BooleanBlock block)Sets block to store by this node.private voidsetLeft(BooleanBigList.BooleanBlockNode node, BooleanBigList.BooleanBlockNode previous)Sets the left field to the node, or the previous node if that is nullprivate intsetOffset(BooleanBigList.BooleanBlockNode node, int newOffest)Sets the relative position.private voidsetRight(BooleanBigList.BooleanBlockNode node, BooleanBigList.BooleanBlockNode next)Sets the right field to the node, or the next node if that is nulljava.lang.StringtoString()Used for debugging.
-
-
-
Field Detail
-
parent
BooleanBigList.BooleanBlockNode parent
Pointer to parent node (null for root)
-
left
BooleanBigList.BooleanBlockNode 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
BooleanBigList.BooleanBlockNode 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
BooleanBigList.BooleanBlock block
The stored block
-
-
Constructor Detail
-
BooleanBlockNode
private BooleanBlockNode(BooleanBigList.BooleanBlockNode parent, int relPos, BooleanBigList.BooleanBlock block, BooleanBigList.BooleanBlockNode rightFollower, BooleanBigList.BooleanBlockNode 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
-
getBooleanBlock
private BooleanBigList.BooleanBlock getBooleanBlock()
Gets the block stored by this node.- Returns:
- block stored by this node
-
setBooleanBlock
private void setBooleanBlock(BooleanBigList.BooleanBlock block)
Sets block to store by this node.- Parameters:
block- the block to store
-
next
private BooleanBigList.BooleanBlockNode next()
Gets the next node in the list after this one.- Returns:
- the next node
-
previous
private BooleanBigList.BooleanBlockNode previous()
Gets the node in the list before this one.- Returns:
- the previous node
-
insert
private BooleanBigList.BooleanBlockNode insert(int index, BooleanBigList.BooleanBlock 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 BooleanBigList.BooleanBlockNode insertOnLeft(int relIndex, BooleanBigList.BooleanBlock 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 BooleanBigList.BooleanBlockNode insertOnRight(int relIndex, BooleanBigList.BooleanBlock 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 BooleanBigList.BooleanBlockNode getLeftSubTree()
Gets the left node, returning null if its a faedelung.
-
getRightSubTree
private BooleanBigList.BooleanBlockNode getRightSubTree()
Gets the right node, returning null if its a faedelung.
-
max
private BooleanBigList.BooleanBlockNode max()
Gets the rightmost child of this node.- Returns:
- the rightmost child (greatest index)
-
min
private BooleanBigList.BooleanBlockNode min()
Gets the leftmost child of this node.- Returns:
- the leftmost child (smallest index)
-
removeMax
private BooleanBigList.BooleanBlockNode removeMax()
-
removeMin
private BooleanBigList.BooleanBlockNode removeMin(int size)
-
removeSelf
private BooleanBigList.BooleanBlockNode removeSelf()
Removes this node from the tree.- Returns:
- the node that replaces this one in the parent (can be null)
-
doRemoveSelf
private BooleanBigList.BooleanBlockNode doRemoveSelf()
-
balance
private BooleanBigList.BooleanBlockNode balance()
Balances according to the AVL algorithm.
-
getOffset
private int getOffset(BooleanBigList.BooleanBlockNode node)
Gets the relative position.
-
setOffset
private int setOffset(BooleanBigList.BooleanBlockNode node, int newOffest)
Sets the relative position.
-
recalcHeight
private void recalcHeight()
Sets the height by calculation.
-
getHeight
private int getHeight(BooleanBigList.BooleanBlockNode 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 BooleanBigList.BooleanBlockNode rotateLeft()
Rotate tree to the left using this node as center.- Returns:
- node which will take the place of this node
-
rotateRight
private BooleanBigList.BooleanBlockNode 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(BooleanBigList.BooleanBlockNode node, BooleanBigList.BooleanBlockNode 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(BooleanBigList.BooleanBlockNode node, BooleanBigList.BooleanBlockNode 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:
toStringin classjava.lang.Object
-
-