コード例 #1
0
 def convert(nums, j, k):
     if j <= k:
         mid = (j + k) // 2
         node = TreeNode(nums[mid])
         node.left = convert(nums, j, mid - 1)
         node.right = convert(nums, mid + 1, k)
         return node
    def test_e1(self):
        n1 = TreeNode(1)
        n2 = TreeNode(2)

        n2.left = n1

        self.assertEqual(2, solution.lowestCommonAncestor(n2, n2, n1).val)
コード例 #3
0
    def deleteNode(self, root: TreeNode, key: int) -> TreeNode:
        if root is None:
            return None

        if key < root.val:
            root.left = self.deleteNode(root.left, key)
            return root
        elif key > root.val:
            root.right = self.deleteNode(root.right, key)
            return root
        else:
            if root.left is None and root.right is None:
                return None
            elif root.left is not None and root.right is None:
                return root.left
            elif root.left is None and root.right is not None:
                return root.right
            else:
                node, parent = self._find_min_node_parent(root.right, None)
                if parent:
                    parent.left = node.right
                node.left = root.left
                if root.right is not node:
                    node.right = root.right
                return node
コード例 #4
0
 def bst(lo, hi):
     if lo <= hi:
         mid = (lo + hi) // 2
         node = TreeNode(nums[mid])
         node.left = bst(lo, mid - 1)
         node.right = bst(mid + 1, hi)
         return node
コード例 #5
0
 def build(inorder_start, inorder_end):
     if inorder_start <= inorder_end:
         cur_val = preorder[self.preorder_ix]
         node = TreeNode(cur_val)
         inorder_ix = inoder_ix_map[cur_val]
         self.preorder_ix += 1
         node.left = build(inorder_start, inorder_ix - 1)
         node.right = build(inorder_ix + 1, inorder_end)
         return node
コード例 #6
0
def insert(root, x):
    if not root:
        return TreeNode(x)
    if (x < root.val):
        root.left = insert(root.left, x)
        root.left_count += 1
    else:
        root.right = insert(root.right, x);
    return root
コード例 #7
0
 def insertIntoBST(self, root: Optional[TreeNode],
                   val: int) -> Optional[TreeNode]:
     if not root:
         return TreeNode(val)
     if val < root.val:
         root.left = self.insertIntoBST(root.left, val)
     else:
         root.right = self.insertIntoBST(root.right, val)
     return root
コード例 #8
0
    def test_solution(self):
        n3 = TreeNode(3)
        n9 = TreeNode(9)
        n20 = TreeNode(20)
        n15 = TreeNode(15)
        n7 = TreeNode(7)

        n20.left = n15
        n20.right = n7
        n3.left = n9
        n3.right = n20

        self.assertEqual([[3], [9, 20], [15, 7]], s.levelOrder(n3))
コード例 #9
0
 def test1(self):
     for f in functions:
         root = list_to_tree([6,2,8,0,4,7,9,None,None,3,5])
         self.assertEqual(f(root, TreeNode(3), TreeNode(7)).val, 6, f.__name__)
コード例 #10
0
    def test_solution(self):
        n3 = TreeNode(3)
        n9 = TreeNode(9)
        n20 = TreeNode(20)
        n15 = TreeNode(15)
        n7 = TreeNode(7)

        n20.left = n15
        n20.right = n7
        n3.left = n9
        n3.right = n20

        self.assertEqual(3, s.maxDepth(n3))
    def test_solution(self):
        n0 = TreeNode(0)
        n2 = TreeNode(2)
        n3 = TreeNode(3)
        n4 = TreeNode(4)
        n5 = TreeNode(5)
        n6 = TreeNode(6)
        n7 = TreeNode(7)
        n8 = TreeNode(8)
        n9 = TreeNode(9)

        n4.left = n3
        n4.right = n5
        n2.left = n0
        n2.right = n4
        n8.left = n7
        n8.right = n9
        n6.left = n2
        n6.right = n8

        self.assertEqual(6, solution.lowestCommonAncestor(n6, n2, n8).val)
        self.assertEqual(2, solution.lowestCommonAncestor(n6, n2, n4).val)
コード例 #12
0
    def test_e1(self):
        root = TreeNode(1)
        root.left = TreeNode(1)

        self.assertFalse(solution.isValidBST(root))