问题230:给定一个二叉搜索树,编写一个函数来查找其中第k个最小的元素。

二叉搜索树,其定义是一个节点的值大于其左孩子,小于其右孩子。用中序遍历就可以获得树中所有节点值从小到大的排序。这题不需要额外的存储空间,中序遍历过程中每扫到一个元素的时候,计数器count += 1,当count == k时直接输出当前节点的值。
完整代码:
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
stack = []
l = []
count = 0
while stack or root:
while root:
stack.append(root)
root = root.left
root = stack.pop()
count += 1
if count == k:
return root.val
root = root.right
运行结果:
