LeetCode230:二叉查找树中第k小的元素

问题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

运行结果:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。