[Leetcode] 230. Kth Smallest Element in a BST
BST에서 k
번째로 작은 숫자를 구하는 문제다.
이전에 풀었던 98.Validate Binary Search Tree와 코드가 유사하다.
BST는 중위순회하면 오름차순이라는 점을 이용한다.
class Solution:
def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
stack = []
curr = root
prev = None
count = 0
while curr or stack:
while curr:
stack.append(curr)
curr = curr.left
curr = stack.pop()
count += 1
if count == k:
return curr.val
prev = curr
curr = curr.right
curr
, 직전에 방문한 노드를 저장할 변수 prev
를 설정한다.curr
값을 업데이트 하고 카운트한다.k
번째라면 값을 반환한다.prev
값과 curr
값을 업데이트하며 탐색을 계속한다.