def random_complete_tree(i):
     vals = randints(i + 2, max_num=i * 100)
     root = TreeNode.from_iterable(vals)
     i_first_leaf = int(len(vals) / 2)
     i_last_left_left = len(vals) - len(vals) % 2 - 1
     result = sum(vals[i_last_left_left:i_first_leaf - 1:-2])
     return Case(root, result=result)
Esempio n. 2
0
 def random_case(i):
     """
     :param int i: number of times this function is called starting from 0
     :return Case:
     """
     root = TreeNode.make_random(size=i)
     return _make_case(root)
from rapidtest import Test, Case, TreeNode
from solutions.binary_tree_postorder_traversal import Solution

with Test(Solution) as test:
    Case(TreeNode.from_string('[1,null,2,3]'), result=[3, 2, 1])
    Case(TreeNode.from_string('[]'), result=[])
    Case(TreeNode.from_string('[1]'), result=[1])
    Case(TreeNode.from_string('[1,2]'), result=[2, 1])
    Case(TreeNode.from_string('[1,2]'), result=[2, 1])
    Case(TreeNode.from_string(
        '[1,2,null,4,5,null,6,2,null,6,8,4,null,1,2,4,null,6,8,0,9,null,7,5,4,null,3,null,2,3]'
    ),
         result=[
             3, 0, 9, 1, 7, 2, 6, 5, 4, 4, 8, 6, 4, 3, 6, 2, 8, 4, 2, 5, 2, 1
         ])
from __future__ import print_function

from rapidtest import MAX_INT, Test, Case, TreeNode, randints

with Test('./solutions/SumOfLeftLeaves.java') as test:
    Case(TreeNode.from_iterable([0]), result=0)
    Case(TreeNode.from_iterable([10]), result=0)
    Case(TreeNode.from_iterable([]), result=0)
    Case(TreeNode.from_iterable([1, None, 2]), result=0)
    Case(TreeNode.from_iterable([1, 2, 3]), result=2)
    Case(TreeNode.from_iterable([1, MAX_INT, 3]), result=MAX_INT)
    Case(TreeNode.from_iterable([1, 2, 3, 4, 5]), result=4)

    @test
    def random_complete_tree(i):
        vals = randints(i + 2, max_num=i * 100)
        root = TreeNode.from_iterable(vals)
        i_first_leaf = int(len(vals) / 2)
        i_last_left_left = len(vals) - len(vals) % 2 - 1
        result = sum(vals[i_last_left_left:i_first_leaf - 1:-2])
        return Case(root, result=result)
Esempio n. 5
0
 def random_case_with_duplicate_nodes(i):
     root = TreeNode.make_random(size=i, duplicate=True)
     return _make_case(root)
Esempio n. 6
0
from __future__ import print_function

from rapidtest import Result, Test, Case, TreeNode
from solutions.binary_search_tree_iterator import BSTIterator

with Test(BSTIterator, operation=True) as test:
    root = TreeNode.from_iterable([5, 3, 7, 1, 4, 6, 8, None, 2])
    Case([root], 'hasNext', Result(True), 'next', Result(1), 'hasNext',
         Result(True), 'next', Result(2), 'hasNext', Result(True), 'next',
         Result(3), 'hasNext', Result(True), 'next', Result(4), 'hasNext',
         Result(True), 'next', Result(5), 'hasNext', Result(True), 'next',
         Result(6), 'hasNext', Result(True), 'next', Result(7), 'hasNext',
         Result(True), 'next', Result(8), 'hasNext', Result(False))

    @test
    def random_case(i):
        """
        :param int i: number of times this function is called starting from 0
        :return Case:
        """
        root = TreeNode.make_random(size=i)
        return _make_case(root)

    @test(50)
    def random_case_with_duplicate_nodes(i):
        root = TreeNode.make_random(size=i, duplicate=True)
        return _make_case(root)

    def _make_case(root):
        operations = []
Esempio n. 7
0
 def smaller_children(i):
     return Case(TreeNode.from_iterable([i, i - 1]),
                 TreeNode(i),
                 TreeNode(i - 1),
                 result=TreeNode(i))
Esempio n. 8
0
 def greater_children(i):
     return Case(TreeNode.from_iterable([i, None, i + 1]),
                 TreeNode(i),
                 TreeNode(i + 1),
                 result=TreeNode(i))
Esempio n. 9
0
from rapidtest import Test, Case, TreeNode
from solutions.lowest_common_ancestor_of_a_binary_search_tree import Solution

with Test(Solution, post_proc=TreeNode.get_val) as test:
    root = TreeNode.from_iterable([6, 2, 8, 0, 4, 7, 9, None, None, 3, 5])
    Case(root, TreeNode(2), TreeNode(4), result=TreeNode(2))
    Case(root, TreeNode(4), TreeNode(2), result=TreeNode(2))
    Case(root, TreeNode(2), TreeNode(8), result=TreeNode(6))
    Case(root, TreeNode(8), TreeNode(2), result=TreeNode(6))
    Case(root, TreeNode(3), TreeNode(7), result=TreeNode(6))
    Case(root, TreeNode(0), TreeNode(4), result=TreeNode(2))
    Case(root, TreeNode(0), TreeNode(5), result=TreeNode(2))
    Case(root, TreeNode(2), TreeNode(6), result=TreeNode(6))
    Case(root, TreeNode(6), TreeNode(2), result=TreeNode(6))
    Case(root, TreeNode(6), TreeNode(2), result=TreeNode(6))
    Case(root, TreeNode(0), TreeNode(0), result=TreeNode(0))

    @test
    def greater_children(i):
        return Case(TreeNode.from_iterable([i, None, i + 1]),
                    TreeNode(i),
                    TreeNode(i + 1),
                    result=TreeNode(i))

    @test
    def smaller_children(i):
        return Case(TreeNode.from_iterable([i, i - 1]),
                    TreeNode(i),
                    TreeNode(i - 1),
                    result=TreeNode(i))
Esempio n. 10
0
 def r(i):
     root = TreeNode.make_random(max(1, i))
     return Case(root.inorder(), root.postorder(), result=root)
Esempio n. 11
0
from rapidtest import Test, Case, TreeNode
from solutions.construct_binary_tree_from_inorder_and_postorder_traversal import Solution

with Test(Solution) as test:
    Case([], [], result=None)
    Case([1], [1], result=TreeNode.from_iterable([1]))
    Case([1, 2], [2, 1], result=TreeNode.from_iterable([1, None, 2]))
    Case([1, 2], [1, 2], result=TreeNode.from_iterable([2, 1]))
    Case([2, 1], [2, 1], result=TreeNode.from_iterable([1, 2]))
    Case([2, 1], [1, 2], result=TreeNode.from_iterable([2, None, 1]))

    @test
    def r(i):
        root = TreeNode.make_random(max(1, i))
        return Case(root.inorder(), root.postorder(), result=root)