반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 230 | Kth Smallest Element in a BST | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/kth-smallest-element-in-a-bst/
문제
Given the root of a binary search tree, and an integer k, return the $k^{th}$ smallest value (1-indexed) of all the values of the nodes in the tree.
조건
- The number of nodes in the tree is n.
- 1 <= k <= n <= $10^4$
- 0 <= Node.val <= $10^4$
내 풀이
우리가 이 문제를 직접 푼다면 BST의 제일 왼쪽 끝 노드로 가서 하나씩 올라올 것이다.
이 방법을 그대로 코드로 구현한다. 그럼 iterative하게 구현될 것이다.
나는 smallest라는 함수로 구현했다.
[root.left로 계속 타고 내려가고, 끝에 도달하면 self.arr 리스트에 현재 val을 저장한다. 그 후에 root.right로 내려간다.]
이 과정을 반복하며 self.arr의 길이가 k가 될 때 제일 마지막에 추가된 원소를 리턴하면 된다.
왜냐하면 제일 작은 수부터 차례로 추가하고 있었기 때문이다.
코드
# 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 kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
self.arr = []
self.k = k
self.smallest(root, self.arr)
return self.arr[-1]
def smallest(self, root, arr):
if root:
self.smallest(root.left, arr)
if len(self.arr) < self.k:
self.arr.append(root.val)
else:
return
self.smallest(root.right, self.arr)
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 173 | Binary Search Tree Iterator | Python (0) | 2022.04.20 |
---|---|
[LeetCode] 99 | Recover Binary Search Tree | Python (0) | 2022.04.19 |
[LeetCode] 669 | Trim a Binary Search Tree | Python (0) | 2022.04.15 |
[LeetCode] 700 | Search in an Binary Search Tree | Python (0) | 2022.04.14 |
[LeetCode] 59 | Spiral Matrix II | Python (0) | 2022.04.13 |
Comments