题目:原题链接(中等)

解法 时间复杂度 空间复杂度 执行用时
Ans 1 (Python) O ( H ) O(H) O(H) : H为树的高度 O ( H ) O(H) O(H): H为树的高度 156ms (89.91%)
Ans 2 (Python) O ( H ) O(H) O(H) : H为树的高度 O ( H ) O(H) O(H): H为树的高度 160ms (83.03%)
Ans 3 (Python)

LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。

解法一:

def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode:
    def helper(node):
        if val < node.val:
            if node.left is None:
                node.left = TreeNode(val)
            else:
                helper(node.left)
        if val > node.val:
            if node.right is None:
                node.right = TreeNode(val)
            else:
                helper(node.right)

    if root is None:
        return TreeNode(val)
    else:
        helper(root)
        return root

解法二(优雅版解法一):

def insertIntoBST(self, root: TreeNode, val: int) -> 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