-
[LeetCode/Python] 700. Search in a Binary Search TreeAlgorithm/Leet Code 2020. 7. 15. 01:30
Description
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.
# 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 : return None else : if root.val == val : return root elif root.val > val : return self.searchBST(root.left, val) elif root.val < val : return self.searchBST(root.right, val)
함수를 재귀호출하는 방식으로 풀었다.
root가 null 이면 None를 return한다.
root의 val이 찾는 val 값이라면 root를 리턴한다.
왼쪽 자식노드에는 루트노드보다 작은 값, 오른쪽 자식노드에는 루트노드보다 큰 값이 있으므로 대소 비교를 통해 함수를 호출한다.
https://leetcode.com/problems/search-in-a-binary-search-tree/
'Algorithm > Leet Code' 카테고리의 다른 글
[LeetCode/Python] 2. Add Two Numbers (0) 2020.07.15 [LeetCode/Python] 859. Buddy Strings (0) 2020.07.12 [LeetCode/Python] 1221. Split a String in Balanced Strings (0) 2020.07.12