(self)
Re balance tree. After inserting or deleting a node,
Re balance tree. After inserting or deleting a node,
Re balance tree . After inserting or deleting a node
def re_balance(self):
        """
        Re balance tree. After inserting or deleting a node,
        """
        self.update_heights(recursive=False)
        self.update_balances(False)

        while self.balance < -1 or self.balance > 1:
            if self.balance > 1:
                if self.node.left.balance < 0:
                    self.node.left.rotate_left()
                    self.update_heights()
                    self.update_balances()
                self.rotate_right()
                self.update_heights()
                self.update_balances()

            if self.balance < -1:
                if self.node.right.balance > 0:
                    self.node.right.rotate_right()
                    self.update_heights()
                    self.update_balances()
                self.rotate_left()
                self.update_heights()
                self.update_balances()
def re_balance ( self ) : self . update_heights ( recursive = False ) self . update_balances ( False ) while self . balance < - 1 or self . balance > 1 : if self . balance > 1 : if self . node . left . balance < 0 : self . node . left . rotate_left ( ) self . update_heights ( ) self . update_balances ( ) self . rotate_right ( ) self . update_heights ( ) self . update_balances ( ) if self . balance < - 1 : if self . node . right . balance > 0 : self . node . right . rotate_right ( ) self . update_heights ( ) self . update_balances ( ) self . rotate_left ( ) self . update_heights ( ) self . update_balances ( )