Example #1
0
def test_construct_from_in_and_post_orders_empty():
    inorder = []
    postorder = []

    actual = BinaryTreeNode.construct_from_in_and_post_orders(
        inorder, postorder)

    assert actual == None
Example #2
0
def test_construct_from_list():
    # arrange
    # e.g.
    #    4
    #  7   3
    #     1
    input = [4, 7, 3, None, None, 1]

    sut = BinaryTreeNode.construct_from_list(input)

    # act / assert
    assert sut.traverse_level_order() == [4, 7, 3, 1]
Example #3
0
def test_univalue_path_2():
    #               1
    #              / \
    #             4   5
    #            / \   \
    #           4   4   5
    sut = BinaryTreeNode(1)
    sut.left = BinaryTreeNode(4)
    sut.right = BinaryTreeNode(5)
    sut.left.left = BinaryTreeNode(4)
    sut.left.right = BinaryTreeNode(4)
    sut.right.right = BinaryTreeNode(5)

    # act
    actual = solution.longest_univalue_path(sut)

    # assert
    assert actual == 2
Example #4
0
def test_construct_from_list_complex():
    # arrange
    input = [
        4, -7, -3, None, None, -9, -3, 9, -7, -4, None, 6, None, -6, -6, None,
        None, 0, 6, 5, None, 9, None, None, -1, -4, None, None, None, -2
    ]

    # act
    sut = BinaryTreeNode.construct_from_list(input)
    actual = sut.traverse_level_order()

    # assert
    expected = list(filter(lambda x: x is not None, input))
    assert actual == expected
Example #5
0
def test_construct_from_in_and_post_orders(in_order, post_order):
    actual = BinaryTreeNode.construct_from_in_and_post_orders(
        in_order, post_order.copy())

    assert actual.traverse_post_order() == post_order
Example #6
0
from src.data_structures.binary_tree import BinaryTreeNode
import pytest

# arrange
#   1
#  2 3
# 4   5
sut = BinaryTreeNode(1)
sut.left = BinaryTreeNode(2)
sut.left.left = BinaryTreeNode(4)
sut.right = BinaryTreeNode(3)
sut.right.right = BinaryTreeNode(5)


def test_traverse_in_order():
    assert sut.traverse_in_order() == [4, 2, 1, 3, 5]


def test_traverse_pre_order():
    assert sut.traverse_pre_order() == [1, 2, 4, 3, 5]


def test_traverse_post_order():
    assert sut.traverse_post_order() == [4, 2, 5, 3, 1]


def test_traverse_level_order():
    assert sut.traverse_level_order() == [1, 2, 3, 4, 5]


def _setup_traverse_func_test():
 def __init__(self, data):
     BinaryTreeNode.__init__(self, first, last)
Example #8
0
 def test_isSameTree_multiple_nodes_same_values_different_structure_returns_false(
         self):
     self._assert_isSameTree(
         False, TreeNode.from_list([1, 2, 3, None, 4, 5, None, None, 6]),
         TreeNode.from_list([1, 2, 3, 4, 5, 6]))
Example #9
0
 def test_isSameTree_multiple_nodes_same_values_same_structure_returns_true(
         self):
     self._assert_isSameTree(
         True, TreeNode.from_list([1, 2, 3, None, 4, 5, None, None, 6]),
         TreeNode.from_list([1, 2, 3, None, 4, 5, None, None, 6]))