示例#1
0
            def remove_one_child_root():
                """Removing root in a tree where the root has only one child"""
                tree = Bst()
                tree.add(ROOT_DATA)
                tree.add(LEFT_DATA)
                self.assertFalse(tree.isempty())
                self.assertEquals(tree.getsize(), 2)
                self.assertEquals(tree.root.getleft().getdata(), LEFT_DATA)

                val = tree.remove(ROOT_DATA)

                self.assertFalse(tree.isempty())
                self.assertEquals(tree.getsize(), 1)
                self.assertEquals(val, ROOT_DATA)
                self.assertIsNotNone(tree.root)
                self.assertNotEquals(tree.root.getdata(), ROOT_DATA)
                self.assertEquals(tree.root, Node(LEFT_DATA))
示例#2
0
def balanced_tree():
    tree = Bst()
    # Add root
    tree.add(ROOT_DATA)

    # Add children
    tree.add(LEFT_DATA)
    tree.add(RIGHT_DATA)

    # Add left's children
    tree.add(LL_DATA)
    tree.add(LR_DATA)

    # Add right's children
    tree.add(RL_DATA)
    tree.add(RR_DATA)

    return tree
示例#3
0
    def test_size(self):
        tree = Bst()
        self.assertEquals(tree.size, 0)
        self.assertEquals(tree.size, tree.getsize())

        # Set tree size to arbitrary number
        ARBITRARY_SIZE = 5
        tree.size = ARBITRARY_SIZE
        self.assertEquals(tree.size, ARBITRARY_SIZE)
        self.assertEquals(tree.size, tree.getsize())

        # Adding should increment size
        tree = balanced_tree()
        self.assertEquals(tree.getsize(), 7)
        FAR_RIGHT_DATA = 100
        tree.add(FAR_RIGHT_DATA)
        self.assertEquals(tree.getsize(), 8)

        # Removing should decrement size
        tree = balanced_tree()
        self.assertEquals(tree.getsize(), 7)
        tree.remove(ROOT_DATA)
        self.assertEquals(tree.getsize(), 6)
示例#4
0
def left_chain_tree():
    tree = Bst()
    # Add root
    tree.add(ROOT_DATA)

    # Add left child
    tree.add(LEFT_DATA)

    # Add left's child
    tree.add(LL_DATA)

    return tree
示例#5
0
def root_only():
    tree = Bst()
    tree.add(ROOT_DATA)
    return tree
示例#6
0
    def test_add(self):
        tree = Bst()
        tree.add(ROOT_DATA)

        self.assertEquals(tree.getsize(), 1)
        self.assertIsNotNone(tree.root)
        self.assertEquals(tree.root.getheight(), 0)
        self.assertEquals(tree.root.getdata(), ROOT_DATA)

        # Add left child
        tree.add(LEFT_DATA)
        self.assertEquals(tree.getsize(), 2)
        self.assertIsNotNone(tree.root.getleft())
        self.assertIsNone(tree.root.getright())
        self.assertEquals(tree.root.getleft().getdata(), LEFT_DATA)
        self.assertEquals(tree.root.getheight(), 1)

        # Add right child
        tree.add(RIGHT_DATA)
        self.assertEquals(tree.getsize(), 3)
        self.assertIsNotNone(tree.root.getleft())
        self.assertIsNotNone(tree.root.getright())
        self.assertEquals(tree.root.getright().getdata(), RIGHT_DATA)
        self.assertEquals(tree.root.getheight(), 1)

        # Add granchildren to left child
        tree.add(LL_DATA)
        self.assertEquals(tree.getsize(), 4)
        self.assertIsNotNone(tree.root.getleft().getleft())
        self.assertIsNone(tree.root.getleft().getright())
        self.assertEquals(tree.root.getleft().getleft().getdata(), LL_DATA)
        self.assertEquals(tree.root.getheight(), 2)
        self.assertEquals(tree.root.getleft().getheight(), 1)

        tree.add(LR_DATA)
        self.assertEquals(tree.getsize(), 5)
        self.assertIsNotNone(tree.root.getleft().getleft())
        self.assertIsNotNone(tree.root.getleft().getright())
        self.assertEquals(tree.root.getleft().getright().getdata(), LR_DATA)
        self.assertEquals(tree.root.getheight(), 2)
        self.assertEquals(tree.root.getleft().getheight(), 1)

        # Add grandchildren to right child
        tree.add(RL_DATA)
        self.assertEquals(tree.getsize(), 6)
        self.assertIsNotNone(tree.root.getright().getleft())
        self.assertIsNone(tree.root.getright().getright())
        self.assertEquals(tree.root.getright().getleft().getdata(), RL_DATA)
        self.assertEquals(tree.root.getheight(), 2)
        self.assertEquals(tree.root.getright().getheight(), 1)

        tree.add(RR_DATA)
        self.assertEquals(tree.getsize(), 7)
        self.assertIsNotNone(tree.root.getright().getleft())
        self.assertIsNotNone(tree.root.getright().getright())
        self.assertEquals(tree.root.getright().getright().getdata(), RR_DATA)
        self.assertEquals(tree.root.getheight(), 2)
        self.assertEquals(tree.root.getright().getheight(), 1)