E-700. Search in a Binary Search Tree

'''
Time: O(H)
Space: O(H)
'''
# 0 写法1
class Solution:
    def __init__(self):
        self.ans=None
    
    def searchBST(self, root: TreeNode, val: int) -> TreeNode:
        if not root:
            return None
        if val < root.val:
            self.searchBST(root.left, val)
        if val == root.val:
            self.ans=root
        if root.val < val:
            self.searchBST(root.right,val)
        return self.ans

# 1 写法2
class Solution:
    def searchBST(self, root: TreeNode, val: int) -> TreeNode:
        def ldr(root, ans): # <--注意, 如果是写这种传值的递归函数, 最后一定要返回一个值
            if not root:
                return None
            if val < root.val:
                ans = ldr(root.left, ans)
            if val == root.val:
                return root
            if val > root.val:
                ans = ldr(root.right, ans)
            return ans
                
        ans = ldr(root, None)
        return ans

Last updated

Was this helpful?