def testIsSymmetric(self):
     s = Solution()
     p = getTree([1, 2, 2, 3, 4, 4, 3])
     an = [[3, 4, 4, 3], [2, 2], [1]]
     self.assertEqual(s.levelOrderBottom(p), an)
     q = getTree([1, 2, 2, '#', 3, '#', 3])
     an = [[3, 3], [2, 2], [1]]
     self.assertEqual(s.levelOrderBottom(q), an)
 def testIsValidBST(self):
     s = Solution()
     root = getTree([1,'#',2,3])
     self.assertFalse(s.isValidBST(root))
     root = getTree([1,'#',2,'#',3])
     self.assertTrue(s.isValidBST(root))
 def testZigzagLevelOrder(self):
     s = Solution()
     root = getTree([3,9,20,'#','#',15,7])
     an = [[3],[20,9],[15,7]]
     self.assertEqual(s.zigzagLevelOrder(root), an)
 def testIsBalanced(self):
     s = Solution()
     p = getTree([1, 2, 2, 3, 4, 4, 3])
     self.assertEqual(s.isBalanced(p), True, "result not agree")
     q = getTree([1, 2, 2, "#", 3, "#", "#", 4])
     self.assertEqual(s.isBalanced(q), False, "result not agree")
 def testIsSymmetric(self):
     s = Solution()
     p = getTree([1, 2, 2, 3, 4, 4, 3])
     self.assertEqual(s.isSymmetric(p), True, "result not agree")
     q = getTree([1, 2, 2, '#', 3, '#', 3])
     self.assertEqual(s.isSymmetric(q), False, "result not agree")