[Leetcode] 0230. BST의 K번째로 작은 요소

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

중간


주어진 뿌리 이진 검색 트리와 정수 케이, 반품 그만큼 케이 번째 가장 작은 값 (1-인덱싱됨) 트리의 모든 노드의 값 중.

 

예시 1:

입력: 루트 = [3,1,4,null,2], k = 1
산출: 1

예 2:

입력: 루트 = [5,3,6,2,4,null,null,1], k = 3
산출: 3

 

제약:

  • 트리의 노드 수는 N.
  • 1 <= k <= n <= 10 4
  • 0 <= 노드.val <= 10 4

 

후속 조치: BST가 자주 수정되는 경우(즉, 삽입 및 삭제 작업이 가능한 경우) k번째로 작은 값을 자주 찾아야 하는 경우 어떻게 최적화할 수 있을까요?

파이썬

				
					# 이진 트리 노드에 대한 정의. import List, Optional 클래스 TreeNode를 입력하여: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right 클래스 해결책: def addToArr(self, node: Optional[TreeNode], treeList: List[int]) -> None: if node: self.addToArr(node.left, treeList) treeList.append(node.val) self.addToArr(node.right, treeList) def kthSmallest(self, root: Optional[TreeNode], k: int) -> int: result = [] self.addToArr(root, result) return result[k-1]
				
			
ko_KR한국어