def test_third_example(self):

        root1 = TreeNode(0)
        root1.right = TreeNode(1)
        root2 = None

        self.assertFalse(Solution().flipEquiv(root1, root2))
Ejemplo n.º 2
0
    def addOneRow(self, root: TreeNode, v: int, d: int) -> TreeNode:

        # Handle root replacement separately
        if d == 1:
            new_root = TreeNode(v)
            new_root.left = root
            return new_root

        queue = collections.deque([(root, 1)])
        while queue:
            node, depth = queue.popleft()
            if depth == d - 1:
                temp_left = node.left
                node.left = TreeNode(v)
                node.left.left = temp_left
                temp_right = node.right
                node.right = TreeNode(v)
                node.right.right = temp_right
            # Nodes deeper than the target depth are irrelevant
            if depth >= d:
                break
            if node.left:
                queue.append((node.left, depth + 1))
            if node.right:
                queue.append((node.right, depth + 1))
        return root
Ejemplo n.º 3
0
    def test_simple_unbalanced_tree(self):

        root = TreeNode(1)
        root.right = TreeNode(2)
        root.right.right = TreeNode(3)

        self.assertFalse(Solution().isBalanced(root))
 def test_first_example(self):
     root = TreeNode(0)
     root.left = TreeNode(1)
     root.right = TreeNode(2)
     root.left.left = TreeNode(3)
     root.left.right = TreeNode(4)
     root.right.left = TreeNode(3)
     root.right.right = TreeNode(4)
     self.assertEqual(Solution().smallestFromLeaf(root), 'dba')
    def test_second_example(self):

        root = TreeNode(25)
        root.left = TreeNode(1)
        root.right = TreeNode(3)
        root.left.left = TreeNode(1)
        root.left.right = TreeNode(3)
        root.right.left = TreeNode(0)
        root.right.right = TreeNode(2)
        self.assertEqual(Solution().smallestFromLeaf(root), 'adz')
Ejemplo n.º 6
0
        def dict_as_tree(tree: Dict, node: TreeNode) -> TreeNode:
            """Converts the dictionary into a tree"""
            for value, children in tree.items():
                if value[0] == 'l':
                    node.left = TreeNode(int(value[1:]))
                    dict_as_tree(children, node.left)
                else:
                    node.right = TreeNode(int(value[1:]))
                    dict_as_tree(children, node.right)

            return node
    def test_second_example(self):

        root = TreeNode(1)
        root.left = TreeNode(2)
        root.left.left = TreeNode(4)
        root.right = TreeNode(3)
        root.right.left = TreeNode(5)
        root.right.right = TreeNode(6)
        root.right.left.left = TreeNode(7)

        self.assertEqual(Solution().findBottomLeftValue(root), 7)
    def test_first_example(self):

        root = TreeNode(1)
        root.left = TreeNode(0)
        root.right = TreeNode(1)
        root.left.left = TreeNode(0)
        root.left.right = TreeNode(1)
        root.right.left = TreeNode(0)
        root.right.right = TreeNode(1)

        self.assertEqual(Solution().sumRootToLeaf(root), 22)
Ejemplo n.º 9
0
    def test_first_example(self):

        root = TreeNode(1)
        root.left = TreeNode(2)
        root.left.left = TreeNode(3)
        root.left.right = TreeNode(4)
        root.right = TreeNode(2)
        root.right.right = TreeNode(3)
        root.right.left = TreeNode(4)

        self.assertTrue(Solution().isSymmetric(root))
Ejemplo n.º 10
0
    def test_simple_tree(self):

        original_root = TreeNode(1)
        original_root.left = TreeNode(2)

        serialized = Codec().serialize(original_root)
        self.assertEqual(serialized, '{"l1": {"l2": {}}}')

        root = Codec().deserialize(serialized)
        self.assertEqual(root.val, 1)
        self.assertEqual(root.left.val, 2)
        self.assertIsNone(root.right)
    def test_first_example(self):

        root = TreeNode(1)
        root.left = TreeNode(2)
        root.right = TreeNode(3)
        root.left.left = TreeNode(4)
        root.left.right = TreeNode(5)
        root.right.left = TreeNode(6)
        root.right.right = TreeNode(7)

        expected = [root, root.right.left, root.right.right]
        self.assertListEqual(Solution().delNodes(root, [3, 5]), expected)
Ejemplo n.º 12
0
    def test_first_example(self):

        root = TreeNode(10)
        root.left = TreeNode(5)
        root.right = TreeNode(15)
        root.left.left = TreeNode(3)
        root.left.right = TreeNode(7)
        root.right.right = TreeNode(18)
        self.assertEqual(Solution().rangeSumBST(root, 7, 15), 32)
Ejemplo n.º 13
0
    def test_second_example(self):

        root = TreeNode(5)
        root.left = TreeNode(3)
        root.right = TreeNode(6)
        root.left.left = TreeNode(2)
        root.left.right = TreeNode(4)
        root.left.left.left = TreeNode(1)
        self.assertEqual(Solution().kthSmallest(root, 3), 3)
Ejemplo n.º 14
0
    def test_univalued_tree(self):

        root = TreeNode(1)
        root.left = TreeNode(1)
        root.right = TreeNode(1)
        root.left.left = TreeNode(1)
        root.left.right = TreeNode(1)
        root.right.right = TreeNode(1)
        self.assertTrue(Solution().isUnivalTree(root))
Ejemplo n.º 15
0
    def invertTree(self, root: TreeNode) -> TreeNode:

        if not root:
            return root

        temp = root.right
        root.right = root.left
        root.left = temp

        self.invertTree(root.left)
        self.invertTree(root.right)

        return root
Ejemplo n.º 16
0
    def test_false_example(self):

        root = TreeNode(5)
        root.left = TreeNode(1)
        root.right = TreeNode(4)
        root.right.left = TreeNode(3)
        root.right.right = TreeNode(6)
        self.assertFalse(Solution().isValidBST(root))
Ejemplo n.º 17
0
    def test_example(self):

        root = TreeNode(3)
        root.left = TreeNode(9)
        root.right = TreeNode(20)
        root.right.left = TreeNode(15)
        root.right.right = TreeNode(7)
        self.assertEqual(Solution().minDepth(root), 2)
Ejemplo n.º 18
0
 def test_example(self):
     root = TreeNode(3)
     root.left = TreeNode(9)
     root.right = TreeNode(20)
     root.right.left = TreeNode(15)
     root.right.right = TreeNode(7)
     expected = [[3], [9, 20], [15, 7]]
     self.assertListEqual(Solution().levelOrder(root), expected)
Ejemplo n.º 19
0
    def test_true_example(self):

        root = TreeNode(1)
        root.left = TreeNode(2)
        root.left.right = TreeNode(4)
        root.right = TreeNode(3)
        root.right.right = TreeNode(5)
        self.assertTrue(Solution().isCousins(root, 5, 4))
Ejemplo n.º 20
0
    def test_regular_tree(self):

        root = TreeNode(2)
        root.left = TreeNode(2)
        root.right = TreeNode(2)
        root.left.left = TreeNode(5)
        root.left.right = TreeNode(2)
        self.assertFalse(Solution().isUnivalTree(root))
Ejemplo n.º 21
0
    def test_balanced_tree(self):

        root = TreeNode(3)
        root.left = TreeNode(9)
        root.right = TreeNode(20)
        root.right.left = TreeNode(15)
        root.right.right = TreeNode(7)

        self.assertTrue(Solution().isBalanced(root))
Ejemplo n.º 22
0
    def test_second_example(self):

        root = TreeNode(1)
        root.left = TreeNode(2)
        root.left.right = TreeNode(3)
        root.right = TreeNode(2)
        root.right.right = TreeNode(3)

        self.assertFalse(Solution().isSymmetric(root))
Ejemplo n.º 23
0
    def test_second_example(self):

        root = TreeNode(1)
        root.left = TreeNode(2)
        root.right = TreeNode(3)
        root.left.left = TreeNode(4)
        root.left.right = TreeNode(5)

        self.assertEqual(Solution().sumOfLeftLeaves(root), 4)
Ejemplo n.º 24
0
    def test_first_example(self):

        root = TreeNode(3)
        root.left = TreeNode(9)
        root.right = TreeNode(20)
        root.right.left = TreeNode(15)
        root.right.right = TreeNode(7)

        self.assertEqual(Solution().sumOfLeftLeaves(root), 24)
Ejemplo n.º 25
0
    def test_serializing(self):

        root = TreeNode(1)
        root.left = TreeNode(2)
        root.right = TreeNode(3)
        root.right.left = TreeNode(4)
        root.right.right = TreeNode(5)
        serialized = '{"l1": {"l2": {}, "r3": {"l4": {}, "r5": {}}}}'
        self.assertEqual(Codec().serialize(root), serialized)
    def test_first_example(self):

        root = TreeNode(3)
        root.left = TreeNode(9)
        root.right = TreeNode(20)
        root.right.left = TreeNode(15)
        root.right.right = TreeNode(7)

        self.assertEqual(Solution().averageOfLevels(root), [3, 14.5, 11])
Ejemplo n.º 27
0
    def test_second_example(self):

        root_p = TreeNode(1)
        root_p.left = TreeNode(2)

        root_q = TreeNode(1)
        root_q.right = TreeNode(2)

        self.assertFalse(Solution().isSameTree(root_p, root_q))
Ejemplo n.º 28
0
    def test_example(self):

        root = TreeNode(1)
        root.left = TreeNode(2)
        root.left.right = TreeNode(5)
        root.right = TreeNode(3)
        root.right.right = TreeNode(4)

        self.assertListEqual(Solution().rightSideView(root), [1, 3, 4])
Ejemplo n.º 29
0
    def test_second_example(self):

        root = TreeNode(4)
        root.left = TreeNode(9)
        root.right = TreeNode(0)
        root.left.left = TreeNode(5)
        root.left.right = TreeNode(1)

        self.assertEqual(Solution().sumNumbers(root), 1026)
Ejemplo n.º 30
0
    def test_basic_example(self):

        root = TreeNode(4)
        root.left = TreeNode(2)
        root.right = TreeNode(6)
        root.left.left = TreeNode(3)
        root.left.right = TreeNode(1)
        root.right.left = TreeNode(5)

        root = Solution().addOneRow(root, 1, 2)
        self.assertEqual(root.left.val, 1)
        self.assertEqual(root.right.val, 1)
        self.assertEqual(root.left.left.val, 2)
        self.assertIsNone(root.left.right)
        self.assertEqual(root.right.right.val, 6)
        self.assertEqual(root.right.right.left.val, 5)
        self.assertIsNone(root.right.left)