示例#1
0
    def tree_intersections(self, other_tree):
        from code_challenges.merge_sort.merge_sort import merge_sort
        intersections = []

        def walk(root):
            if not root:
                return

            # pre-order traversal, we'll see if the other tree contains value
            if other_tree.contains(root.value):
                intersections.append(root.value)

            # now lets recursively walk the left and right children
            walk(root.left)
            walk(root.right)

        walk(self.root)
        merge_sort(intersections)
        return intersections
示例#2
0
def tree_intersection(binarytree1, binarytree2):

    def binary_tree_to_unique_hashtable(binarytree):
        bt_hashtable = Hashtable()

        def walk(root):
            if root.left_node:
                walk(root.left_node)

            if root.value and not bt_hashtable.contains(str(root.value)):
                bt_hashtable.add(str(root.value), 1)

            if root.right_node:
                walk(root.right_node)

        walk(binarytree.root)

        return bt_hashtable

    bt_hashtable = binary_tree_to_unique_hashtable(binarytree1)

    def find_common_values(hashtable1, binarytree2):
        repeats = set()

        def walk(root):
            if root.left_node:
                walk(root.left_node)

            if root.value and hashtable1.contains(str(root.value)):
                repeats.add(root.value)

            if root.right_node:
                walk(root.right_node)

        walk(binarytree2.root)

        return repeats

    repeats = find_common_values(bt_hashtable, binarytree2)

    return merge_sort(list(repeats))
def test_assert_sort_insertion_temp():
    assert merge_sort([8, 4, 23, 42, 16, 15])
def test_merge_sort_negative_array():
    arr = [8, 4, 23, 42, -16, 15]
    actual = merge_sort(arr)
    expected = [-16, 4, 8, 15, 23, 42]
    assert actual == expected
def test_single_list():
    the_list = [5]
    merge_sort(the_list)
    actual = the_list
    expect = [5]
    assert actual == expect
def test_unsorted_list_with_duplicates():
    the_list = [3, 6, 2, 4, 3]
    merge_sort(the_list)
    actual = the_list
    expect = [2, 3, 3, 4, 6]
    assert actual == expect
def test_already_sorted_list():
    the_list = [1, 2, 3, 4, 5]
    merge_sort(the_list)
    actual = the_list
    expect = [1, 2, 3, 4, 5]
    assert actual == expect
示例#8
0
def test_arr_one():
    actual = merge_sort([8,4,23,42,16,15])
    expected = [4,8,15,16,23,42]
    assert actual == expected 
def test_sort_one():
    test = [5, 4, 3, 2]
    merge_sort(test)
    actual = test
    expected = [2, 3, 4, 5]
    assert actual == expected
def test_sort_two():
    test = [10, 20, 3, 40]
    merge_sort(test)
    actual = test
    expected = [3, 10, 20, 40]
    assert actual == expected
def test_edge():
    actual = merge_sort([1])
    expected = [1]
    assert actual == expected
示例#12
0
def test_reverse_sorted():
    actual = merge_sort([20, 18, 12, 8, 5, -2])
    expect = [-2, 5, 8, 12, 18, 20]
    assert actual == expect
示例#13
0
def test_unsorted_list():
    actual = merge_sort([1, 5, 6, 7, 8, 2, 4, 55, 111])
    expect = [1, 2, 4, 5, 6, 7, 8, 55, 111]
    assert actual == expect
示例#14
0
def test_nearly_sorted():
    actual = merge_sort([2, 3, 5, 7, 13, 11])
    expect = [2, 3, 5, 7, 11, 13]
    assert actual == expect
示例#15
0
def test_few_uniques():
    actual = merge_sort([5, 12, 7, 5, 5, 7])
    expect = [5, 5, 5, 7, 7, 12]
    assert actual == expect
示例#16
0
def test_arr_three():
    actual = merge_sort([5,12,7,5,5,7])
    expected = [5,5,5,7,7,12]
    assert actual == expected 
示例#17
0
def test_arr_four():
    actual = merge_sort([2,3,5,7,13,11])
    expected = [2,3,5,7,11,13]
    assert actual == expected 
示例#18
0
def test_negative_numbers():
    arr = [-7, -9, -8, 3]
    actual = merge_sort(arr)
    expected = [-9, -8, -7, 3]
    assert actual == expected
示例#19
0
def test_arr_two():
    actual = merge_sort([20,18,12,8,5,-2])
    expected = [-2,5,8,12,18,20]
    assert actual == expected 
示例#20
0
def test_reverse_sorted():
    arr = [20, 18, 12, 8, 5, -2]
    actual = merge_sort(arr)
    expected = [-2, 5, 8, 12, 18, 20]
    assert actual == expected
def test_unsorted_list():
    the_list = [3, 6, 2, 4]
    merge_sort(the_list)
    actual = the_list
    expect = [2, 3, 4, 6]
    assert actual == expect
示例#22
0
def test_few_uniques():
    arr = [5, 12, 7, 5, 5, 7]
    actual = merge_sort(arr)
    expected = [5, 5, 5, 7, 7, 12]
    assert actual == expected
def test_unsorted_list_with_negatives_and_zero():
    the_list = [3, -6, -2, 4, 3, 0]
    merge_sort(the_list)
    actual = the_list
    expect = [-6, -2, 0, 3, 3, 4]
    assert actual == expect
示例#24
0
def test_nearly_sorted():
    arr = [2, 3, 5, 7, 13, 11]
    actual = merge_sort(arr)
    expected = [2, 3, 5, 7, 11, 13]
    assert actual == expected
def test_merge_sort_simple_array():
    arr = [8, 4, 23, 42, 16, 15]
    actual = merge_sort(arr)
    expected = [4, 8, 15, 16, 23, 42]
    assert actual == expected
示例#26
0
def test_one_index():
    arr = [7]
    actual = merge_sort(arr)
    expected = [7]
    assert actual == expected
def test_merge_sort_unique_array():
    arr = [5, 12, 7, 5, 5, 7]
    actual = merge_sort(arr)
    expected = [5, 5, 5, 7, 7, 12]
    assert actual == expected
示例#28
0
def test_none():
    arr = []
    actual = merge_sort(arr)
    expected = 'theres nothing here...'
    assert actual == expected
def test_merge_sort_empty_array():
    arr = []
    actual = merge_sort(arr)
    expected = None
    assert actual == expected
示例#30
0
def test_happy_path():
    arr = [8, 4, 23, 42, 16, 15]
    actual = merge_sort(arr)
    expected = [4, 8, 15, 16, 23, 42]
    assert actual == expected