Exemple #1
0
def bn1():
    tree = BinaryTree()
    root = Node("150")
    node_100 = Node("100")
    node_250 = Node("250")
    node_75 = Node("75")
    node_160 = Node("160")
    node_200 = Node("200")
    node_350 = Node("350")
    node_125 = Node("125")
    node_175 = Node("175")
    node_300 = Node("300")
    node_500 = Node("500")

    tree.root = root
    root.left = node_100
    root.right = node_250
    node_100.left = node_75
    node_100.right = node_160
    node_250.left = node_200
    node_250.right = node_350
    node_160.left = node_125
    node_160.right = node_175
    node_350.left = node_300
    node_350.right = node_500

    return tree
Exemple #2
0
def bn2():
    tree = BinaryTree()
    root = Node("42")
    node_100 = Node("100")
    node_600 = Node("600")
    node_15 = Node("15")
    node_160 = Node("160")
    node_200 = Node("200")
    node_350 = Node("350")
    node_125 = Node("125")
    node_175 = Node("175")
    node_4 = Node("4")
    node_500 = Node("500")

    tree.root = root
    root.left = node_100
    root.right = node_600
    node_100.left = node_15
    node_100.right = node_160
    node_600.left = node_200
    node_600.right = node_350
    node_160.left = node_125
    node_160.right = node_175
    node_350.left = node_4
    node_350.right = node_500

    return tree
Exemple #3
0
def test_max_value():
    node = BinaryNode(23)
    tree = BinaryTree(node)
    BinarySearchTree.add(tree, 8)
    BinarySearchTree.add(tree, 42)
    BinarySearchTree.add(tree, 9)
    BinarySearchTree.add(tree, 10)
    BinarySearchTree.add(tree, 5)

    actual = tree.max_value()
    expected = 42
    assert actual == expected
Exemple #4
0
def test_post_order_collection():
    node = BinaryNode(23)
    tree = BinaryTree(node)
    BinarySearchTree.add(tree, 8)
    BinarySearchTree.add(tree, 42)
    BinarySearchTree.add(tree, 9)
    BinarySearchTree.add(tree, 10)
    BinarySearchTree.add(tree, 5)

    tree.post_order()
    actual = tree.collect
    expected = [5, 10, 9, 8, 42, 23]
    assert actual == expected
Exemple #5
0
def bn_tree_ub():
    tree = BinaryTree()
    a = Node('A')
    b = Node('B')
    c = Node('C')
    d = Node('D')

    tree.root = a
    a.left = b
    a.right = c
    b.right = d

    return tree
Exemple #6
0
def test_pre_order_collection():
    node = BinaryNode(23)
    tree = BinaryTree(node)
    BinarySearchTree.add(tree, 8)
    BinarySearchTree.add(tree, 42)
    BinarySearchTree.add(tree, 9)
    BinarySearchTree.add(tree, 10)
    BinarySearchTree.add(tree, 5)

    tree.pre_order()
    actual = tree.collect
    expected = [23, 8, 5, 9, 10, 42]
    assert actual == expected
    def bt1(self):
        bt1 = BT()
        bt1.add(1)
        bt1.add(2)
        bt1.add(3)
        bt1.add(4)
        bt1.add(5)
        bt1.add(6)
        bt1.add(7)

        return bt1
Exemple #8
0
def build_parse_tree(expr):
    tokens = expr.split()
    stack = Stack()

    tree = BinaryTree('')
    stack.push(tree)
    current_tree = tree

    for token in tokens:
        if token == '(':
            current_tree.insert_left('')
            stack.push(current_tree)
            current_tree = current_tree.get_left_child()
        # If token is an operand (e.g. a number)
        elif token not in ['+', '-', '*', '/', ')']:
            try:
                current_tree.set_root(int(token))
                parent = stack.pop()
                current_tree = parent
            except ValueError:
                raise ValueError(f'Token {token} is not a valid integer')
        elif token in ['+', '-', '*', '/']:
            current_tree.set_root(token)
            current_tree.insert_right('')
            stack.push(current_tree)
            current_tree = current_tree.get_right_child()
        elif token == ')':
            current_tree = stack.pop()

    return tree
Exemple #9
0
def bn_mixed_tree():
    tree = BinaryTree()
    a = Node(6)
    b = Node(75)
    c = Node(34)
    d = Node(12)
    e = Node(1)
    f = Node(100)

    tree.root = a
    a.left = b
    a.right = c
    b.left = d
    b.right = e
    c.left = f

    return tree
Exemple #10
0
def bn_tree():
    tree = BinaryTree()
    a = Node('A')
    b = Node('B')
    c = Node('C')
    d = Node('D')
    e = Node('E')
    f = Node('F')

    tree.root = a
    a.left = b
    a.right = c
    b.left = d
    b.right = e
    c.left = f

    return tree
Exemple #11
0
def test_binary_tree_children():
    node_a = Node('A')
    node_b = Node('B')
    node_c = Node('C')
    tree = BinaryTree(node_b)
    tree.root.left = node_b
    tree.root.right = node_c
    assert tree.root.left.value == 'B'
    assert tree.root.right.value == 'C'
Exemple #12
0
def test_breadth_first():
    a = BinaryNode(1)
    b = BinaryNode(3)
    c = BinaryNode(4)
    d = BinaryNode(2)
    e = BinaryNode(7)

    tree = BinaryTree(a)

    tree.root.left = b
    tree.root.right = c

    c.left = d
    c.right = e

    actual = tree.breadth_first()
    expected = [1, 3, 4, 2, 7]

    assert actual == expected
    def bt2(self):
        bt2 = BT()
        bt2.add(1)
        bt2.add(3)
        bt2.add(4)
        bt2.add(4)
        bt2.add(5)
        bt2.add(6)

        return bt2
Exemple #14
0
def test_root_right_left():
    node = BinaryNode(23)
    tree = BinaryTree(node)
    BinarySearchTree.add(tree, 8)
    BinarySearchTree.add(tree, 42)

    actual = tree.root.left.value
    expected = 8
    assert actual == expected

    actual = tree.root.right.value
    expected = 42
    assert actual == expected
Exemple #15
0
def test_tree_intersection_one_empty(bn1):
    assert tree_intersection(bn1, BinaryTree()) == []
    def test_tree_intersection_no_matches(self):
        bt1 = BT()
        bt1.add('five')
        bt1.add('four')
        bt1.add('three')
        bt1.add('two')
        bt1.add('one')

        bt2 = BT()
        bt2.add(5)
        bt2.add(4)
        bt2.add(3)
        bt2.add(2)
        bt2.add(1)

        assert ti(bt1, bt2) == set()
Exemple #17
0
def test_binary_tree_breadth_first_empty():
    actual = breadth(BinaryTree())
    expected = []
    assert actual == expected
Exemple #18
0
def test_binary_tree_root():
    node = Node('A')
    tree = BinaryTree(node)
    actual = tree.root.value
    expected = node.value
    assert actual == expected
Exemple #19
0
def test_empty_tree():

    tree = BinaryTree()
    actual = tree.root
    expected = None
    assert actual == expected
Exemple #20
0
def test_root_only():
    node = BinaryNode(23)
    tree = BinaryTree(node)
    actual = tree.root.value
    expected = 23
    assert actual == expected
Exemple #21
0
def test_tree_intersection_both_empty():
    assert tree_intersection(BinaryTree(), BinaryTree()) == []