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
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
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
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)))
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)
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)
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
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
def test_insert_right(): root = Node(1) root.insert(2) assert str(root) == "1 2"
def test_insert_left(): root = Node(1) root.insert(0) assert str(root) == "0 1"
def test_insert_duplicate(): root = Node(1) root.insert(1) assert root == Node(1)
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)]