거누의 개발노트
[파이썬] 700. Search in a Binary Search Tree - 리트코드 본문
반응형
문제
BST에서 노드의 값이 val과 같은 노드를 찾고 해당 노드의 하위 트리를 반환하는 코드를 작성. 그러한 노드가 존재하지 않으면 null을 반환 합니다.
입력
Input: root = [4,2,7,1,3], val = 2
출력
Output: [2,1,3]
작성한 코드1
# 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]:
# root가 비어있다면 None
if not root:
return None
# root가 비어있지 않다면
else:
# root의 값이 기준값과 같으면
if root.val == val:
# 해당 노드를 반환함으로써, 하위노드까지 반환
return root
elif root.val > val:
#root의 값이 기준값보다 작은 값을 찾아야하므로 왼쪽으로 재귀호출해서 반환
return self.searchBST(root.left, val)
elif root.val < val:
#root의 값이 기준값보다 큰 값을 찾아야하므로 오른쪽에서 재귀호출에서 반환
return self.searchBST(root.right, val)
작성한 코드2
# 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]:
#root가 존재하고, root.val가 val랑 다를 동안
while (root and root.val != val):
# root.val가 val보다 크면 작은 값을 찾아야하기에
if root.val > val:
# root에다가 root.left 값을 넣는다.
root = root.left
else:
# 아니면 root.right 값을 넣는다.
root = root.right
#최종적으로 root를 반환해 주면, 하위 노드까지 반환!
return root
https://leetcode.com/problems/search-in-a-binary-search-tree/
반응형
'코딩테스트' 카테고리의 다른 글
[파이썬] 1464. Maximum Product of Two Elements in an Array - 리트코드 (0) | 2022.05.25 |
---|---|
[파이썬] 297. Serialize and Deserialize Binary Tree - 리트코드 (0) | 2022.05.24 |
[파이썬] 938. Range Sum of BST - 리트코드 (0) | 2022.05.24 |
파이썬 알고리즘 인터뷰 - 이진 트리 반전 (0) | 2022.05.24 |
파이썬 알고리즘 인터뷰 - 가장 긴 동일 값의 경로 (0) | 2022.05.23 |
Comments