def _fixRotation(self, parent :Node, grandParent : Node, greatGrandParent : Node): parent.parent = greatGrandParent if greatGrandParent: if greatGrandParent > grandParent: greatGrandParent.left = parent else: greatGrandParent.right = parent else: self.root = parent
def _rotateRight(self, node : Node, parent : Node, grandParent: Node): greatGrandParent = grandParent.parent self._fixRotation(parent, grandParent, greatGrandParent) oldRight = parent.right parent.right = grandParent grandParent.parent = parent grandParent.left = oldRight if oldRight: oldRight.parent = grandParent