def test_commonAncestorIsNode(self): root = node.Node(1) root.left = node.Node(2) root.right = node.Node(3) root.left.left = node.Node(4) root.left.right = node.Node(5) root.right.left = node.Node(6) root.right.right = node.Node(7) self.assertEqual(2, node.lowestCommonAncestor(root, 2, 4)) self.assertEqual(2, node.lowestCommonAncestor(root, 2, 2)) self.assertEqual(2, node.lowestCommonAncestor(root, 4, 2))
def test_basicTree(self): root = node.Node(1) root.left = node.Node(2) root.right = node.Node(3) root.left.left = node.Node(4) root.left.right = node.Node(5) root.right.left = node.Node(6) root.right.right = node.Node(7) self.assertEqual(1, node.lowestCommonAncestor(root, 4, 3)) self.assertEqual(1, node.lowestCommonAncestor(root, 2, 7)) self.assertEqual(3, node.lowestCommonAncestor(root, 6, 7))
def test_extremeInputValues(self): root = node.Node(-9223372036854775800) root.left = node.Node(1.6) root.right = node.Node(1.7) root.left.left = node.Node(1.9) root.left.right = node.Node(300000) root.right.left = node.Node(400000) root.right.right = node.Node(9223372036854775800) self.assertEqual(-9223372036854775800, node.lowestCommonAncestor(root, 1.6, 1.7)) self.assertEqual( 1.7, node.lowestCommonAncestor(root, 400000, 9223372036854775800))
def test_duplicatedNodes(self): root = node.Node(1) root.left = node.Node(2) root.right = node.Node(3) root.left.left = node.Node(4) root.left.right = node.Node(6) root.right.left = node.Node(6) root.right.right = node.Node(7) self.assertEqual(1, node.lowestCommonAncestor(root, 6, 7))
def test_bothNodesInvalid(self): root = node.Node(1) root.left = node.Node(2) root.right = node.Node(3) root.left.left = node.Node(4) root.left.right = node.Node(5) root.right.left = node.Node(6) root.right.right = node.Node(7) self.assertEqual(-1, node.lowestCommonAncestor(root, 8, 9))
def test_charTest(self): root = node.Node('a') root.left = node.Node('b') root.right = node.Node('c') root.left.left = node.Node('d') root.left.right = node.Node('e') root.right.left = node.Node('f') root.right.right = node.Node('g') self.assertEqual('a', node.lowestCommonAncestor(root, 'e', 'g'))
def test_InvalidNode(self): root = node.Node(1) root.left = node.Node(2) root.right = node.Node(3) root.left.left = node.Node(4) root.left.right = node.Node(5) root.right.left = node.Node(6) root.right.right = node.Node(7) self.assertEqual(-1, node.lowestCommonAncestor(root, 4, 9), "Unfound node returns -1")
def test_rootIsNodeOnly(self): root = node.Node(1) self.assertEqual(1, node.lowestCommonAncestor(root, 1, 1))
def test_nullTree(self): root = None self.assertEqual(-1, node.lowestCommonAncestor(root, 4, 5), 'Empty tree returns -1')