private AVLTreeNode singleRotateRight(AVLTreeNode node) { AVLTreeNode parent_node = (AVLTreeNode) node.getParentNode(); AVLTreeNode swap_node = (AVLTreeNode) node.getRightChild(); node.setRightChild(swap_node.getLeftChild()); swap_node.setLeftChild(node); node.setDepth(max(node.getLeftChildDepth(), (node.getRightChildDepth() + 1))); swap_node.setDepth(max(swap_node.getRightChildDepth(), (node.getDepth() + 1))); if (parent_node == null) { swap_node.setParentNode(parent_node); } else { if (parent_node.getLeftChild() == node) { parent_node.setLeftChild(swap_node); } else { parent_node.setRightChild(swap_node); } } return swap_node; }
private AVLTreeNode doubleRotateRight(AVLTreeNode node) { node.setRightChild(singleRotateLeft((AVLTreeNode) node.getRightChild())); return singleRotateRight(node); }