230. Kth Smallest Element in a BST
# 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:
# 왼->현->오른쪽..으로 리스트업하면. 즉 inorder 순회 전체 나오고 거기에서.. k번째 찾으면 됨
res = []
def dfs(node):
if not node: # 노드 없으면
return # 그냥 끝내고
if node.left:
dfs(node.left)
res.append(node.val)
if node.right:
dfs(node.right)
dfs(root)
return res[k-1] # 0이 1번째 이므로, k번째는 index가 k-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 kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
# k번째 작은거니, inorder로 모두 res 에 추가하면
# 작은순서대로..
# k번째 작은것: res[k-1] 리턴
if not root:
return 0
res = []
def dfs(node):
if node.left:
dfs(node.left)
res.append(node.val)
if node.right:
dfs(node.right)
dfs(root)
#print(res)
return res[k-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 kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
# k 번째 작은거 찾기 -> inorder 순서로 배열에 넣어서,
# k번째 작은거니, k-1 번째 반환. 왜? 1번째 작은게. index 0 이니..
# inorder: 왼, 나, 오
res = []
def dfs(node):
if not node:
return
dfs(node.left)
res.append(node.val)
dfs(node.right)
dfs(root)
return res[k-1]'job 인터뷰 > 코테(Matroid) 준비' 카테고리의 다른 글
| [DP: 0 / 1 Knapsack] 494. Target Sum ★★★ (0) | 2025.04.12 |
|---|---|
| [Iterative DFS] 173. Binary Search Tree Iterator (0) | 2025.04.08 |
| Tree: 235. Lowest Common Ancestor of a Binary Search Tree (0) | 2025.01.16 |
| Tree: 543. Diameter of Binary Tree ★ (0) | 2025.01.16 |
| BST: 701. Insert into a Binary Search Tree (0) | 2025.01.15 |