美文网首页
Leetcode 230 二叉搜索树第K小的元素

Leetcode 230 二叉搜索树第K小的元素

作者: 禾木清清 | 来源:发表于2019-07-11 17:25 被阅读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 函数?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

使用递归的方法:

  • 终止条件是节点为空
  • 遍历左子树
  • 在中心节点,对K-1, 当为0时,返回值
  • 遍历右子树

代码

# 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
        """
        self.k = k
        self.res = 0
        
        def dfs(root):
            if not root:
                return 0
            
            dfs(root.left)
            self.k -= 1
            if self.k == 0:
                self.res = root.val
            dfs(root.right)
            
        dfs(root)
        return self.res

相关文章

网友评论

      本文标题:Leetcode 230 二叉搜索树第K小的元素

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