/** * get a node's grandparent. mind you, the node, its parent, or * its grandparent may not exist. no problem * * @param node the node (may be null) in question * @param index KEY or VALUE */ private static Node getGrandParent(final Node node, final int index) { return getParent(getParent(node, index), index); }
/** * get a node's grandparent. mind you, the node, its parent, or * its grandparent may not exist. no problem * * @param node the node (may be null) in question * @param index KEY or VALUE */ private static Node getGrandParent(final Node node, final int index) { return getParent(getParent(node, index), index); }
if (isLeftChild(currentNode, index)) { Node siblingNode = getRightChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateLeft(getParent(currentNode, index), index); siblingNode = getRightChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index); } else { if (isBlack(getRightChild(siblingNode, index), index)) { getRightChild(getParent(currentNode, index), index); copyColor(getParent(currentNode, index), siblingNode, index); makeBlack(getParent(currentNode, index), index); makeBlack(getRightChild(siblingNode, index), index); rotateLeft(getParent(currentNode, index), index); Node siblingNode = getLeftChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateRight(getParent(currentNode, index), index); siblingNode = getLeftChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index);
if (isLeftChild(currentNode, index)) { Node siblingNode = getRightChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateLeft(getParent(currentNode, index), index); siblingNode = getRightChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index); } else { if (isBlack(getRightChild(siblingNode, index), index)) { getRightChild(getParent(currentNode, index), index); copyColor(getParent(currentNode, index), siblingNode, index); makeBlack(getParent(currentNode, index), index); makeBlack(getRightChild(siblingNode, index), index); rotateLeft(getParent(currentNode, index), index); Node siblingNode = getLeftChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateRight(getParent(currentNode, index), index); siblingNode = getLeftChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index);
&& (isRed(currentNode.getParent(index), index))) { if (isLeftChild(getParent(currentNode, index), index)) { Node y = getRightChild(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isRightChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isLeftChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index);
&& (isRed(currentNode.getParent(index), index))) { if (isLeftChild(getParent(currentNode, index), index)) { Node y = getRightChild(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isRightChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isLeftChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index);
/** * get a node's grandparent. mind you, the node, its parent, or * its grandparent may not exist. no problem * * @param node the node (may be null) in question * @param index KEY or VALUE */ private static Node getGrandParent(final Node node, final int index) { return getParent(getParent(node, index), index); }
/** * get a node's grandparent. mind you, the node, its parent, or * its grandparent may not exist. no problem * * @param node the node (may be null) in question * @param index KEY or VALUE */ private static Node getGrandParent(final Node node, final int index) { return getParent(getParent(node, index), index); }
/** * get a node's grandparent. mind you, the node, its parent, or * its grandparent may not exist. no problem * * @param node the node (may be null) in question * @param index KEY or VALUE */ private static Node getGrandParent(final Node node, final int index) { return getParent(getParent(node, index), index); }
/** * get a node's grandparent. mind you, the node, its parent, or * its grandparent may not exist. no problem * * @param node the node (may be null) in question * @param index KEY or VALUE */ private static Node getGrandParent(final Node node, final int index) { return getParent(getParent(node, index), index); }
/** * get a node's grandparent. mind you, the node, its parent, or * its grandparent may not exist. no problem * * @param node the node (may be null) in question * @param index KEY or VALUE */ private static Node getGrandParent(final Node node, final int index) { return getParent(getParent(node, index), index); }
if (isLeftChild(currentNode, index)) { Node siblingNode = getRightChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateLeft(getParent(currentNode, index), index); siblingNode = getRightChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index); } else { if (isBlack(getRightChild(siblingNode, index), index)) { getRightChild(getParent(currentNode, index), index); copyColor(getParent(currentNode, index), siblingNode, index); makeBlack(getParent(currentNode, index), index); makeBlack(getRightChild(siblingNode, index), index); rotateLeft(getParent(currentNode, index), index); Node siblingNode = getLeftChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateRight(getParent(currentNode, index), index); siblingNode = getLeftChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index);
if (isLeftChild(currentNode, index)) { Node siblingNode = getRightChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateLeft(getParent(currentNode, index), index); siblingNode = getRightChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index); } else { if (isBlack(getRightChild(siblingNode, index), index)) { getRightChild(getParent(currentNode, index), index); copyColor(getParent(currentNode, index), siblingNode, index); makeBlack(getParent(currentNode, index), index); makeBlack(getRightChild(siblingNode, index), index); rotateLeft(getParent(currentNode, index), index); Node siblingNode = getLeftChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateRight(getParent(currentNode, index), index); siblingNode = getLeftChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index);
if (isLeftChild(currentNode, index)) { Node siblingNode = getRightChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateLeft(getParent(currentNode, index), index); siblingNode = getRightChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index); } else { if (isBlack(getRightChild(siblingNode, index), index)) { getRightChild(getParent(currentNode, index), index); copyColor(getParent(currentNode, index), siblingNode, index); makeBlack(getParent(currentNode, index), index); makeBlack(getRightChild(siblingNode, index), index); rotateLeft(getParent(currentNode, index), index); Node siblingNode = getLeftChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateRight(getParent(currentNode, index), index); siblingNode = getLeftChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index);
if (isLeftChild(currentNode, index)) { Node siblingNode = getRightChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateLeft(getParent(currentNode, index), index); siblingNode = getRightChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index); } else { if (isBlack(getRightChild(siblingNode, index), index)) { getRightChild(getParent(currentNode, index), index); copyColor(getParent(currentNode, index), siblingNode, index); makeBlack(getParent(currentNode, index), index); makeBlack(getRightChild(siblingNode, index), index); rotateLeft(getParent(currentNode, index), index); Node siblingNode = getLeftChild(getParent(currentNode, index), index); makeRed(getParent(currentNode, index), index); rotateRight(getParent(currentNode, index), index); siblingNode = getLeftChild(getParent(currentNode, index), index); currentNode = getParent(currentNode, index);
&& (isRed(currentNode.getParent(index), index))) { if (isLeftChild(getParent(currentNode, index), index)) { Node y = getRightChild(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isRightChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isLeftChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index);
&& (isRed(currentNode.getParent(index), index))) { if (isLeftChild(getParent(currentNode, index), index)) { Node y = getRightChild(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isRightChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isLeftChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index);
&& (isRed(currentNode.getParent(index), index))) { if (isLeftChild(getParent(currentNode, index), index)) { Node y = getRightChild(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isRightChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isLeftChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index);
&& (isRed(currentNode.getParent(index), index))) { if (isLeftChild(getParent(currentNode, index), index)) { Node y = getRightChild(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isRightChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isLeftChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index);
&& (isRed(currentNode.getParent(index), index))) { if (isLeftChild(getParent(currentNode, index), index)) { Node y = getRightChild(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isRightChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index); makeBlack(getParent(currentNode, index), index); makeBlack(y, index); makeRed(getGrandParent(currentNode, index), index); } else { if (isLeftChild(currentNode, index)) { currentNode = getParent(currentNode, index); makeBlack(getParent(currentNode, index), index); makeRed(getGrandParent(currentNode, index), index);