Esempio n. 1
0
def test_in():
    root = Node(1)
    root.insert(2)
    root.insert(3)
    assert (0 in root) == False
    assert (1 in root) == True
    assert (3 in root) == True
Esempio n. 2
0
def test_find():
    root = Node(1)
    root.insert(2)
    root.insert(-5)
    assert root.find(1) is root
    assert root.find(100) is None
    assert root.find(2) is root.right
    assert root.find(-5) is root.left
Esempio n. 3
0
def run_test(filename):
    try:
        f = open(filename, 'r')
        root = None
        fail = False
        for line in f:
            line = line.strip()
            m = re.match(r'R\s*(\d+)', line)
            if m:
                print('Root:', m.group(1))
                root = Node(int(m.group(1)))
            m = re.match(r'I\s*(\d+)', line)
            if m:
                assert root
                print('Insert:', m.group(1))
                root.insert(int(m.group(1)))
            m = re.match(r'S\s*(\d+)\s*(true|false)', line)
            if m:
                assert root
                print('Search:', m.group(1))
                res = root.key_exists(int(m.group(1)))
                expected = (m.group(2) == 'true')
                if res != expected:
                    print('\t Failed: Expected Value was = ', m.group(2),
                          'root.search returned:', res)
                    fail = True
                else:
                    print('\t Expected: ', m.group(2), ' tree returned: ', res,
                          'OK!')
            m = re.match(r'D\s*(\d+)', line)
            if m:
                assert root
                print('Depth: (expected = ', m.group(1), ')')
                d = root.get_depth()
                if d == int(m.group(1)):
                    print('\t OK!')
                else:
                    print(
                        '\t Failed: expected depth = %s, root.depth returned: %d'
                        % (m.group(1), d))
                    fail = True
            m = re.match(r'T\s*\[((\s*\d+,?)+)\]', line)
            if m:
                assert root
                print('Inorder traversal expected:', end='')
                res_list = m.group(1).split(',')
                int_list = [int(s) for s in res_list]
                print(int_list)
                ret_list = []
                root.inorder_traversal(ret_list)
                if ret_list != int_list:
                    print('Fail -- obtained: ', ret_list)
                    fail = True
        return fail
    except IOError:
        print(' Could not open: ' + filename)
        return True
Esempio n. 4
0
def test_remove():
    root = Node(1)
    root.insert(0)
    root.insert(3)
    root.insert(2)
    root.insert(4)
    root.remove(0)
    assert str(root) == "1 2 3 4"
    assert root.tuple() == (None, 1, ((None, 2, None), 3, (None, 4, None)))
    root.remove(2)
    assert str(root) == "1 3 4"
    assert root.tuple() == (None, 1, (None, 3, (None, 4, None)))
Esempio n. 5
0
def get_results(file):
    '''
    Pass file name to get result of both Problems.
    '''
    data,root =process_json_file('{0}'.format(file))

    root = Node(root)
    for value in data:
        root.insert(value['score'])

    height = root.maxDepth(root)
    unique_value = len(data) + 1 # Since Middle element is removed as root Node.

    print "Height of Standard Binary Tree is : {0}".format(height)
    print 'Unique dict values are : {0}'.format(unique_value)
Esempio n. 6
0
class TestBST(unittest.TestCase):
    def setUp(self):
        self.root = Node(5)
        self.root.insert(Node(1))
        self.root.insert(Node(4))
        self.root.insert(Node(8))
        self.root.insert(Node(11))
        self.root.insert(Node(0))
        self.root.insert(Node(12))
        self.root.insert(Node(-1))

    def test_max(self):
        self.assertEqual(bst_max(self.root).data, 12)

    def test_min(self):
        self.assertEqual(bst_min(self.root).data, -1)
Esempio n. 7
0
def test_random_sequences(n, n_trials, depths_list):
    # Inputs: n = number of elements to be inserted into the tree.
    # n_trials: number of samples to generate
    # depths_list: list of tree depths for each run/sample.

    # 1. Create an array of elements from 0 to n-1
    a = [i for i in range(0,n)]
    # 2. Now create random shuffles of a and insert into the tree.
    for j in range(0, n_trials):
        # Shuffle this array randomly
        random.shuffle(a)
        # Insert the elements of the array one by one into a tree
        r = Node(a[0]) #Create a root
        # Insert the rest of the elements
        for k in range(1, n):
            r.insert(a[k])
        # Compute the depth and append to the list of samples
        depths_list.append(r.get_depth())
    avg = sum(depths_list)/len(depths_list)
    return avg
Esempio n. 8
0
 def create_tree_1(self):
     tree = Node(8)
     tree.insert(12)
     tree.insert(3)
     tree.insert(4)  # Change to 7 to simulate a change in testing fixture
     tree.insert(6)
     return tree
Esempio n. 9
0
def test_insert_right():
    root = Node(1)
    root.insert(2)
    assert str(root) == "1 2"
Esempio n. 10
0
def test_insert_left():
    root = Node(1)
    root.insert(0)
    assert str(root) == "0 1"
Esempio n. 11
0
def test_insert_duplicate():
    root = Node(1)
    root.insert(1)
    assert root == Node(1)
Esempio n. 12
0
                                    leader_schedule)
member_freeSlots = getFreeTimeSlots(working_hours_start, working_hours_end,
                                    member_schedule)

# This is the schedule of the person
# This is not needed is just the fake appointments for testing
search_busySchedule = [Node(mean) for i in range(period)]

#This is the tree with the free slots of time
leader_searchFreeSchedule = [Node(mean) for i in range(period)]
member_searchFreeSchedule = [Node(mean) for i in range(period)]

###Second: we put it in the tree
for i in range(period):
    for j in range(len(leader_schedule[i])):
        search_busySchedule[i] = Node.insert(search_busySchedule[i],
                                             leader_schedule[i][j])

for i in range(period):
    for j in range(len(leader_freeSlots[i])):
        leader_searchFreeSchedule[i] = Node.insert(
            leader_searchFreeSchedule[i], leader_freeSlots[i][j])

for i in range(period):
    for j in range(len(member_freeSlots[i])):
        member_searchFreeSchedule[i] = Node.insert(
            member_searchFreeSchedule[i], member_freeSlots[i][j])


# a and b are array of bsts
def getFreeHoursInCommon1(a, b):
    result = [[] for i in range(period)]