def testEmpty(self): root = lca.Node(1) assert (lca.findLCA(root, 6, 7)) == -1, "Should be -1" assert (lca.findLCA(root, 3, 2)) == -1, "Should be -1" assert (lca.findLCA(root, 4, 5)) == -1, "Should be -1" return
def test_non_existent(self): self.root = lca.Node(1) self.root.left = lca.Node(2) self.root.right = lca.Node(3) self.root.left.left = lca.Node(4) self.root.left.right = lca.Node(5) self.root.right.left = lca.Node(6) self.root.right.right = lca.Node(7) self.assertEquals(lca.findLCA(8, 9), -1);#-1 = FALSE self.assertEquals(lca.findLCA(33, 132), -1)
def testNormal(self): root = lca.Node(1) root.left = lca.Node(2) root.right = lca.Node(3) root.left.left = lca.Node(4) root.left.right = lca.Node(5) root.right.left = lca.Node(6) root.right.right = lca.Node(7) assert (lca.findLCA(root, 6, 7)) == 3, "Should be 3" assert (lca.findLCA(root, 3, 2)) == 1, "Should be 1" assert (lca.findLCA(root, 4, 5)) == 2, "Should be 2" return
def test_root_node( self): # Test case where root is a node of interest for lca root = Node(2) root.left = Node(1) lca1 = lca.findLCA(root, 1, 2) assert lca1.value is 2, "test_root_node failed"
def test_findLCANonBinaryTree(): node = Node(0) node1 = Node(1) node2 = Node(2) node3 = Node(3) node4 = Node(4) node5 = Node(5) node6 = Node(6) addChild(node, node1) addChild(node, node2) addChild(node2, node3) addChild(node2, node4) addChild(node2, node5) addChild(node4, node6) assert findLCA(node, node1, node6) == 0 assert findLCA(node, node3, node6) == 2 assert findLCA(node, node, node6) == 0
def test_findLCANonBinaryTree(): node = Node(0) node1 = Node(1) node2 = Node(2) node3 = Node(3) node4 = Node(4) node5 = Node(5) node6 = Node(6) addChild(node,node1) addChild(node,node2) addChild(node2,node3) addChild(node2,node4) addChild(node2,node5) addChild(node4,node6) assert findLCA(node,node1,node6) == 0 assert findLCA(node,node3,node6) == 2 assert findLCA(node,node,node6) == 0
def testOneMissing(self): root = lca.Node(1) root.left = lca.Node(2) root.right = lca.Node(3) root.left.left = lca.Node(4) root.left.right = lca.Node(5) root.right.left = lca.Node(6) assert (lca.findLCA(root, 6, 7)) == -1, "Should be -1" return
def test_add_node3(): root = lca.Node(4) #4 root.add_node(2) #2 5 root.add_node(5) #1 3 8 7 root.add_node(1) # 10 root.add_node(3) root.add_node(8) root.add_node(7) root.add_node(10) assert lca.findLCA(root, 8, 10) == 5
def test_findLCALoop(): node = Node(0) node1 = Node(1) node2 = Node(2) node3 = Node(3) node4 = Node(4) node5 = Node(5) node6 = Node(6) addChild(node, node1) addChild(node1, node5) addChild(node1, node2) addChild(node2, node3) addChild(node3, node4) addChild(node5, node6) addChild(node6, node4) assert findLCA(node, node1, node5) == 1 assert findLCA(node, node3, node6) == 1 assert findLCA(node, node4, node6) == 6
def test_findLCALoop(): node = Node(0) node1 = Node(1) node2 = Node(2) node3 = Node(3) node4 = Node(4) node5 = Node(5) node6 = Node(6) addChild(node,node1) addChild(node1,node5) addChild(node1,node2) addChild(node2,node3) addChild(node3,node4) addChild(node5,node6) addChild(node6,node4) assert findLCA(node,node1,node5) == 1 assert findLCA(node,node3,node6) == 1 assert findLCA(node,node4,node6) == 6
def test_basic(self): #Test for basic case, nodes present in tree root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) root.right.left = Node(6) root.right.right = Node(7) lca1 = lca.findLCA(root, 4, 5) assert lca1.value is 2, "test_basic failed"
def test_findLCA(): node = Node(1) node1 = Node(2) node2 = Node(3) node3 = Node(4) node4 = Node(5) addChild(node, node1) addChild(node, node2) addChild(node2, node3) addChild(node2, node4) assert findLCA(node, node4, node3) == 3
def test_two_nodes_with_equal_keys( self): # Test case with two nodes of equal keys root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) root.right.left = Node(3) root.right.right = Node(7) lca1 = lca.findLCA(root, 3, 3) assert lca1.value is 3, "test_two_nodes_with_equal_keys failed"
def test_findLCA(): node = Node(1) node1 = Node(2) node2 = Node(3) node3 = Node(4) node4 = Node(5) addChild(node,node1) addChild(node,node2) addChild(node2,node3) addChild(node2,node4) assert findLCA(node,node4,node3) == 3
def test_three_nodes_with_equal_keys( self ): # Test case with three nodes of equal keys, returns lca of the two nodes with correct key that it finds first root = Node(1) root.left = Node(3) root.right = Node(2) root.left.left = Node(4) root.left.right = Node(5) root.right.left = Node(3) root.right.right = Node(3) lca1 = lca.findLCA(root, 3, 3) assert lca1.value is 1, "test_three_nodes_with_equal_keys failed"
def test_lowest_node( self): # Test case with one of the lowest nodes in tree root = Node(5) root.left = Node(2) root.right = Node(9) root.left.left = Node(6) root.left.right = Node(4) root.left.right.right = Node(10) root.left.right.right.right = Node(100) root.right.left = Node(1) root.right.right = Node(0) lca1 = lca.findLCA(root, 0, 100) assert lca1.value is 5, "test_lowest_node failed"
def test_nonpresent_node(self): # Test case for a node not present in tree root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) root.right.left = Node(6) root.right.right = Node(7) lca1 = lca.findLCA(root, 4, 8) assert lca1 is None, "test_nonpresent_node failed" node1 = lca.find(root, 4) #Test each node indivdually assert node1 is True, "test_nonpresent_node node1 failed" node2 = lca.find(root, 8) assert node2 is False, "test_nonpresent_node node2 failed"
def test_left_right_node( self ): # Test case with one node in the furthest left tree and the other in the furthest right tree root = Node(5) root.left = Node(2) root.right = Node(9) root.left.left = Node(6) root.left.right = Node(4) root.left.left.left = Node(10) root.left.left.left.left = Node(101) root.right.right = Node(7) root.right.left = Node(3) root.right.right.right = Node(11) root.right.right.right.right = Node(102) lca1 = lca.findLCA(root, 102, 101) assert lca1.value is 5, "test_left_right_node failed"
def test_answer2(): root = lca.Node(1) assert lca.findLCA(root, 1, 1) == 1
def test_create_tree(): root = lca.create_tree(13, 2, 25) assert lca.findLCA(root, 4, 18) == 13 assert lca.findLCA(root, 10, 12) == 9 assert lca.findLCA(root, 1, 12) == -1
def test_answer1(): assert lca.findLCA(None, None, None) == -1
def test_null(self): # Test case with empty tree root = None lca1 = lca.findLCA(root, 4, 5) assert lca1 is None, "test_null failed"
def test_add_node2(): root = lca.Node(4) root.add_node(2) root.add_node(5) assert lca.findLCA(root, 2, 3) == -1
def test_non_positive(self): self.root = lca.Node(-1) self.root.left = lca.Node(-2) self.root.right = lca.Node(-3) self.assertEquals(lca.findLCA(-2,-3), -1)
def test_only_two(self): self.root = lca.Node(1) self.root.right = lca.Node(2) self.assertEquals(lca.findLCA(1, 2), 1)