Kth Smallest Element in a BST
LeetCode 230. Kth Smallest Element in a BST
원문
Given the root
of a binary search tree, and an integer k
, return the kth
smallest value (1-indexed) of all the values of the nodes in the tree.
중위 순회
이진 탐색 트리에서 중위 순회를 하면 정렬된 순서로 노드에 방문하는 셈이기 때문에 중위 순회를 한다.
코드
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution:
def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
global result, cnt
result, cnt = 0, 0
self.search(root, k)
return result
def search(self, node: Optional[TreeNode], k: int):
if node is None: return
global result, cnt
self.search(node.left, k)
cnt += 1
if cnt == k: result = node.val
self.search(node.right, k)
다른 방법?
문제 상단의 Solutions
탭을 참고하였다.
중위 순회를 한다는 발상은 같지만 중위 순회를 통해 정렬된 리스트 자체를 구해 거기서 k
번째 원소를 반환했다.
코드
Python
1
2
3
4
5
6
7
8
9
class Solution:
def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
def plainList(root):
if root is None: return list()
return plainList(root.left) + [root.val] + plainList(root.right)
result = plainList(root)
return result[k - 1]
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.