美文网首页
10 - Medium - 二叉搜索树中第K小的元素

10 - Medium - 二叉搜索树中第K小的元素

作者: 1f872d1e3817 | 来源:发表于2018-06-25 10:20 被阅读0次

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

    说明:
    你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

    示例 1:

    输入: root = [3,1,4,null,2], k = 1

       3
      / \
     1   4
      \
       2
    

    输出: 1
    示例 2:

    输入: root = [5,3,6,2,4,null,null,1], k = 3

           5
          / \
         3   6
        / \
       2   4
      /
     1
    

    输出: 3
    进阶:
    如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化 kthSmallest 函数?

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def kthSmallest(self, root, k):
            """
            :type root: TreeNode
            :type k: int
            :rtype: int
            """
            stack=[]
            count=0
            while len(stack) or root:
                if root:
                    stack.append(root)
                    root=root.left
                else:
                    node=stack.pop()
                    count+=1
                    if count==k:
                        return node.val
                    else:
                        root=node.right
            return None
    

    相关文章

      网友评论

          本文标题:10 - Medium - 二叉搜索树中第K小的元素

          本文链接:https://www.haomeiwen.com/subject/wvieyftx.html