コード例 #1
0
def test(args=None):
    bst.test(args, BSTtype=AVL)
コード例 #2
0
ファイル: avl.py プロジェクト: heyihong/MIT-OpenCourseWare
        if x.left:
            y.right.father = x
        y.right = x
        x.father = y
        update_height(x)
        update_height(y)
         
    def insert(self, key):
        node = bst.BST.insert(self, key)
        self.rebalance(node)

    def delete(self, key):
        node = bst.BST.delete(self, key)
        self.rebalance(node.father)

    def rebalance(self, node):
        while node:
            update_height(node)
            if height(node.left) == height(node.right) - 2:   
                if height(node.right.right) == height(node.left):
                    self.right_rotate(node.right)
                self.left_rotate(node)
            elif height(node.right) == height(node.left) - 2:
                if height(node.left.left) == height(node.right):
                    self.left_rotate(node.left)
                self.right_rotate(node)
            node = node.father

if __name__ == "__main__":
    bst.test(None, AVL)
コード例 #3
0
def test(args=None):
    bst.test(args, BSTtype=BST)
コード例 #4
0
ファイル: avl.py プロジェクト: ZengFan92/OnlineOpenCourses
            y.right.father = x
        y.right = x
        x.father = y
        update_height(x)
        update_height(y)

    def insert(self, key):
        node = bst.BST.insert(self, key)
        self.rebalance(node)

    def delete(self, key):
        node = bst.BST.delete(self, key)
        self.rebalance(node.father)

    def rebalance(self, node):
        while node:
            update_height(node)
            if height(node.left) == height(node.right) - 2:
                if height(node.right.right) == height(node.left):
                    self.right_rotate(node.right)
                self.left_rotate(node)
            elif height(node.right) == height(node.left) - 2:
                if height(node.left.left) == height(node.right):
                    self.left_rotate(node.left)
                self.right_rotate(node)
            node = node.father


if __name__ == "__main__":
    bst.test(None, AVL)