Exemple #1
0
    def testRotateRightSingleChild(self):
        node = BSTNode(10)
        node.insert(8)
        '''
              10      8
             /         \
            8     ==>   10
        '''

        node.rotate_right()

        assert node.left is None

        assert node.value == 8
        assert node.right.value == 10

        assert node.right.parent == node
Exemple #2
0
    def testRotateRightSingleChild(self):
        node = BSTNode(10)
        node.insert(8)

        '''
              10      8
             /         \
            8     ==>   10
        '''

        node.rotate_right()

        assert node.left is None

        assert node.value == 8
        assert node.right.value == 10
        
        assert node.right.parent == node
Exemple #3
0
    def testRotateRight(self):
        node = BSTNode(10)
        node.insert(8)
        node.insert(7)
        node.insert(9)
        node.insert(11)
        '''
              10             8
             /  \           /  \
            8    11   ==>  7    10
           / \                 /  \
          7   9               9    11
        '''

        assert node.value == 10
        assert node.left.value == 8
        assert node.left.left.value == 7
        assert node.left.right.value == 9
        assert node.right.value == 11

        # All nodes are reachable
        for i in range(7, 11):
            assert node.search(i) is not None and node.search(i).value == i

        node.rotate_right()

        assert node.left.left is None
        assert node.left.right is None

        assert node.value == 8
        assert node.left.value == 7
        assert node.right.value == 10
        assert node.right.left.value == 9
        assert node.right.right.value == 11

        assert node.parent is None
        assert node.left.parent is node
        assert node.right.parent is node
        assert node.right.left.parent is node.right
        assert node.right.right.parent is node.right

        # All nodes still are reachable
        for i in range(7, 11):
            assert node.search(i) is not None and node.search(i).value == i
Exemple #4
0
    def testRotateRight(self):
        node = BSTNode(10)
        node.insert(8)
        node.insert(7)
        node.insert(9)
        node.insert(11)
        '''
              10             8
             /  \           /  \
            8    11   ==>  7    10
           / \                 /  \
          7   9               9    11
        '''

        assert node.value == 10
        assert node.left.value == 8
        assert node.left.left.value == 7
        assert node.left.right.value == 9
        assert node.right.value == 11

        # All nodes are reachable
        for i in range(7, 11):
            assert node.search(i) is not None and node.search(i).value == i

        node.rotate_right()

        assert node.left.left is None
        assert node.left.right is None

        assert node.value == 8
        assert node.left.value == 7
        assert node.right.value == 10
        assert node.right.left.value == 9
        assert node.right.right.value == 11

        assert node.parent is None
        assert node.left.parent is node
        assert node.right.parent is node
        assert node.right.left.parent is node.right
        assert node.right.right.parent is node.right

        # All nodes still are reachable
        for i in range(7, 11):
            assert node.search(i) is not None and node.search(i).value == i
Exemple #5
0
    def testRotateRightTwoChildren(self):
        node = BSTNode(10)
        node.insert(8)
        node.insert(11)
        '''
              10         8
             /  \         \
            8    11 ==>   10
                            \
                             11
        '''

        node.rotate_right()

        assert node.left is None

        assert node.value == 8
        assert node.right.value == 10
        assert node.right.right.value == 11

        assert node.right.parent is node
        assert node.right.right.parent is node.right
Exemple #6
0
    def testRotateRightTwoChildren(self):
        node = BSTNode(10)
        node.insert(8)
        node.insert(11)

        '''
              10         8
             /  \         \
            8    11 ==>   10
                            \
                             11
        '''

        node.rotate_right()

        assert node.left is None

        assert node.value == 8
        assert node.right.value == 10
        assert node.right.right.value == 11
        
        assert node.right.parent is node
        assert node.right.right.parent is node.right