700. Search in a Binary Search Tree
题目
You are given the root of a binary search tree (BST) and an integer val.
Find the node in the BST that the node's value equals val and return the subtree rooted with that node. If such a node does not exist, return null.
Example 1:

Input: root = [4,2,7,1,3], val = 2 Output: [2,1,3]
Example 2:

Input: root = [4,2,7,1,3], val = 5 Output: []
Constraints:
- The number of nodes in the tree is in the range
[1, 5000]. 1 <= Node.val <= 107rootis a binary search tree.1 <= val <= 107
Related Topics
思路
BST 的特征是,左侧 < 根 < 右侧
解法一
python
class Solution:
def searchBST(self, root: TreeNode, val: int) -> TreeNode:
if root is None:
return None
if val == root.val:
return root
return self.searchBST(root.left if val < root.val else root.right, val)复杂度分析
- 时间复杂度 O(N)
- 空间复杂度 O(N)
解法二
py
# leetcode submit region begin(Prohibit modification and deletion)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
node = root
while node:
if node.val == val:
return node
elif node.val < val:
node = node.right
else:
node = node.left
return None
# leetcode submit region end(Prohibit modification and deletion)复杂度分析
- 时间复杂度 O(N)
- 空间复杂度 O(1)