# Definition for a binary tree node.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def searchBSTRecursive(self, node, val):
if node is None:
return None
if node.val == val:
return node
elif val < node.val: # value is in the left part - go left
return self.searchBSTRecursive(node.left, val)
else: # val > node.val; value is in the right part - go right
return self.searchBSTRecursive(node.right, val)
def searchBST(self, root, val):
"""
:type root: TreeNode
:type val: int
:rtype: TreeNode
"""
return self.searchBSTRecursive(root, val)
Замечания:
$h$ — высота дерева (максимум — $n$)
Время: $O(h)$
Память: $O(h)$