def test_given_case_1(self): self.assertEqual(diameterOfBinaryTree(binarytree([1, 2, 3, 4, 5])), 3)
def test_single_child(self): self.assertEqual(minDepth(binarytree([1, 2])), 2)
def test_given_case_1(self): self.assertTrue(isUnivalTree(binarytree([1, 1, 1, 1, 1, None, 1])))
def test_given_case(self): self.assertEqual( sumOfLeftLeaves(binarytree([3, 9, 20, None, None, 15, 17])), 24 )
def test_given_case_2(self): self.assertFalse( isBalanced(binarytree([1, 2, 2, 3, 3, None, None, 4, 4])))
def test_diffferent_leaves(self): self.assertFalse( isSameTree(binarytree([1, 2, 1]), binarytree([1, 1, 2])))
def test_given_case_1(self): self.assertListEqual( to_list(invertTree(binarytree([4, 2, 7, 1, 3, 6, 9]))), [4, 7, 2, 9, 6, 3, 1])
def test_given_case(self): self.assertEqual(set(binaryTreePaths(binarytree([1, 2, 3, None, 5]))), set(["1->2->5", "1->3"]))
def test_full_tree(self): self.assertEqual( set(binaryTreePaths(binarytree([1, 2, 3, 4, 5, 6, 7]))), set(["1->2->4", "1->2->5", "1->3->6", "1->3->7"]))
def test_given_case(self): self.assertListEqual( to_list( mergeTrees(binarytree([1, 3, 2, 5]), binarytree([2, 1, 3, None, 4, None, 7]))), [3, 4, 5, 5, 4, None, 7])
def test_left_leaf_plus_right_leaf(self): self.assertListEqual( to_list(mergeTrees(binarytree([1, 2]), binarytree([2, None, 4]))), [3, 2, 4])
def test_single_level(self): self.assert_list_of_lists_equal(levelOrderBottom(binarytree([1])), [[1]])
def test_given_case(self): self.assert_list_of_lists_equal( levelOrderBottom(binarytree([3, 9, 20, None, None, 15, 7])), [[15, 7], [9, 20], [3]])
def test_longest_path_not_root(self): self.assertEqual( diameterOfBinaryTree( binarytree([1, 2, None, 5, 3, None, None, 6, None, 7])), 4)
def test_general_bad_case(self): self.assertFalse( hasPathSum( binarytree( [5, 4, 8, 1, None, 13, 4, 7, 2, None, None, None, 1]), 22))
def test_given_case(self): self.assert_list_of_lists_equal( zigzagLevelOrder(binarytree([3, 9, 20, None, None, 15, 7])), [[3], [20, 9], [15, 7]])
def test_left_leaf_right_leaf(self): self.assertFalse( isSameTree(binarytree([1, 2]), binarytree([1, None, 2])))
def test_given_case_1(self): self.assertTrue(isSymmetric(binarytree([1, 2, 2, 3, 4, 4, 3])))
def test_larger_case(self): self.assertTrue( isSameTree(binarytree([1, 2, 6, 3, 4, None, None, None, None, 5]), binarytree([1, 2, 6, 3, 4, None, None, None, None, 5])))
def test_given_case_2(self): self.assertFalse(isSymmetric(binarytree([1, 2, 2, None, 3, None, 3])))
def test_right_leaf_only(self): self.assertListEqual(to_list(invertTree(binarytree([1, None, 2]))), [1, 2])
def test_null_child(self): self.assertFalse(isSymmetric(binarytree([1, 2, 2, 2, None, 2])))
def test_given_case_1(self): self.assertTrue(isBalanced(binarytree([3, 9, 20, None, None, 15, 7])))
def test_one_child(self): self.assertFalse(isSymmetric(binarytree([1, 0])))
def test_given_case(self): self.assertEqual(minDepth(binarytree([3, 9, 20, None, None, 15, 7])), 2)
def test_diamond(self): self.assertTrue(isSymmetric(binarytree([1, 2, 2, None, 3, 3])))
def test_depth_four(self): self.assertEqual( minDepth( binarytree( [3, 9, 20, 14, None, 15, 16, None, None, None, None, 17])), 3)
def test_given_case(self): self.assertTrue( hasPathSum( binarytree( [5, 4, 8, 11, None, 13, 4, 7, 2, None, None, None, 1]), 22))
def test_given_case_2(self): self.assertFalse(isUnivalTree(binarytree([2, 2, 2, 5, 2])))
def test_all_equal_k(self): self.assertEqual(pathSum(binarytree([1, 1, 1]), 1), 3)