def test_inorder():
    inorder_nodes = [0,2,3,4,5,6,7,8,9]
    arr_elements = [6,2,8,0,4,7,9,3,5]
    tree = BinarySearchTree()
    for i in range(len(arr_elements)):
        tree.create(arr_elements[i])

    inorder(tree.root)

    for i in range(len(inorder_nodes)):
        assert inorder_nodes[i] == nodes[i]
Exemple #2
0
def test_lca():
    arr_elements = [6, 2, 8, 0, 4, 7, 9, 3, 5]
    tree = BinarySearchTree()
    for i in range(len(arr_elements)):
        tree.create(arr_elements[i])

    lca_node = lca(tree.root, 2, 8)
    assert lca_node.info == 6

    lca_node = lca(tree.root, 2, 4)
    assert lca_node.info == 2
Exemple #3
0

def lca(root, v1, v2):
    global lca_root
    print(root.info)
    lca_root = root

    # Current root node is higher than both values; traverse left subtree
    if root.info > v1 and root.info > v2:
        lca(root.left, v1, v2)

    # Current root node is lower than both values; traverse right subtree
    if root.info < v1 and root.info < v2:
        lca(root.right, v1, v2)

    return lca_root


if __name__ == '__main__':
    tree = BinarySearchTree()
    t = int(input())

    arr = list(map(int, input().split()))

    for i in range(t):
        tree.create(arr[i])

    v = list(map(int, input().split()))

    ans = lca(tree.root, v[0], v[1])
    print(ans.info)