-
Notifications
You must be signed in to change notification settings - Fork 26
/
700.SearchinaBinarySearchTree.py
51 lines (43 loc) · 1.55 KB
/
700.SearchinaBinarySearchTree.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
"""
Given the root node of a binary search tree (BST) and a value. You need to
find the node in the BST that the node's value equals the given value.
Return the subtree rooted with that node. If such node doesn't exist, you
should return NULL.
For example,
Given the tree:
4
/ \
2 7
/ \
1 3
And the value to search: 2
You should return this subtree:
2
/ \
1 3
In the example above, if we want to search the value 5, since there is no
node with value 5, we should return NULL.
Note that an empty tree is represented by NULL, therefore you would see the
expected output (serialized tree format) as [], not null.
"""
#Difficulty: Easy
#36 / 36 test cases passed.
#Runtime: 80 ms
#Memory Usage: 15.9 MB
#Runtime: 80 ms, faster than 65.22% of Python3 online submissions for Search in a Binary Search Tree.
#Memory Usage: 15.9 MB, less than 15.46% of Python3 online submissions for Search in a Binary Search Tree.
# 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: TreeNode, val: int) -> TreeNode:
if not root or root.val == val:
return root
if root.val > val:
result = self.searchBST(root.left, val)
else:
result = self.searchBST(root.right, val)
return result