230. 二叉搜索树中第 K 小的元素 - 力扣(LeetCode)
# 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.count = k # 计数器
self.result = None # 存储第 k 小的值
def inorder(node):
if not node or self.result is not None:
return
inorder(node.left) # 递归左子树
self.count -= 1 # 访问当前节点
if self.count == 0:
self.result = node.val
return
inorder(node.right) # 递归右子树
inorder(root)
return self.result