LeetCode 230. 二叉搜索树中第K小的元素
一个 BST 的前序遍历就是一个有序数组. 因此这道题其实只需要返回前序遍历的第 K 个值. 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
class Solution: def kthSmallest(self, root: Optional[TreeNode], k: int) -> int: stack = [root] curr = root.left while True: if curr: stack.append(curr) curr = curr.left elif stack: curr = stack.pop() k -= 1 if k == 0: return curr.val curr = curr.right else: break return 0
|