def test_right_binary_tree():
    #   5
    #      4
    #         3
    #            2
    #               9
    tree = BinaryTreeNode(5)
    connect_binarytree_nodes(tree, None, BinaryTreeNode(4))
    connect_binarytree_nodes(tree.right, None, BinaryTreeNode(3))
    connect_binarytree_nodes(tree.right.right, None, BinaryTreeNode(2))
    connect_binarytree_nodes(tree.right.right.right, None, BinaryTreeNode(9))
    assert print_binary_tree(tree) == [5, 4, 3, 2, 9]
def test_left_binary_tree():
    #            5
    #          4
    #        3
    #      2
    #    9
    tree = BinaryTreeNode(5)
    connect_binarytree_nodes(tree, BinaryTreeNode(4), None)
    connect_binarytree_nodes(tree.left, BinaryTreeNode(3), None)
    connect_binarytree_nodes(tree.left.left, BinaryTreeNode(2), None)
    connect_binarytree_nodes(tree.left.left.left, BinaryTreeNode(9), None)
    assert print_binary_tree(tree) == [5, 4, 3, 2, 9]
def test_full_binary_tree():
    #        8
    #    6       6
    #   5 7    7   5
    tree = BinaryTreeNode(8)
    connect_binarytree_nodes(tree, BinaryTreeNode(6), BinaryTreeNode(6))
    connect_binarytree_nodes(tree.left, BinaryTreeNode(5), BinaryTreeNode(7))
    connect_binarytree_nodes(tree.right, BinaryTreeNode(7), BinaryTreeNode(5))
    assert print_binary_tree(tree) == [8, 6, 6, 5, 7, 7, 5]
def test_special_not_symmetrical_binary_tree_all_nodes_same():
    #            5
    #          5   5
    #        5       5
    #      5           6
    #    4           3
    tree = BinaryTreeNode(5)
    connect_binarytree_nodes(tree, BinaryTreeNode(5), BinaryTreeNode(5))
    connect_binarytree_nodes(tree.left, BinaryTreeNode(5), None)
    connect_binarytree_nodes(tree.right, None, BinaryTreeNode(5))
    connect_binarytree_nodes(tree.left.left, BinaryTreeNode(5), None)
    connect_binarytree_nodes(tree.right.right, None, BinaryTreeNode(6))
    connect_binarytree_nodes(tree.left.left.left, BinaryTreeNode(4), None)
    connect_binarytree_nodes(tree.right.right.right, BinaryTreeNode(3), None)
    assert print_binary_tree(tree) == [5, 5, 5, 5, 5, 5, 6, 4, 3]
def test_special_not_symmetrical_binary_tree():
    #            5
    #          4   4
    #        3       3
    #      2           2
    #    9
    tree = BinaryTreeNode(5)
    connect_binarytree_nodes(tree, BinaryTreeNode(4), BinaryTreeNode(4))
    connect_binarytree_nodes(tree.left, BinaryTreeNode(3), None)
    connect_binarytree_nodes(tree.right, None, BinaryTreeNode(3))
    connect_binarytree_nodes(tree.left.left, BinaryTreeNode(2), None)
    connect_binarytree_nodes(tree.right.right, None, BinaryTreeNode(2))
    connect_binarytree_nodes(tree.left.left.left, BinaryTreeNode(9), None)
    assert print_binary_tree(tree) == [5, 4, 4, 3, 3, 2, 2, 9]