Leetcode 230 +Kth Smallest Element in a BST
题目描述
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.
Note:
You may assume k is always valid, 1 ≤ k ≤ BST’s total elements.
Example 1:
Input: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
Output: 1
Example 2:
Input: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
Output: 3
Follow up:
What if the BST is modified (insert/delete operations) often and you need to find the kth smallest frequently? How would you optimize the kthSmallest routine?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路解析
def kthSmallest(self, root: TreeNode, k: int) -> int:
if root is None:
return root
stack = []
container = []
curr = root
while curr or len(stack):
if curr is not None:
stack.append(curr)
curr = curr.left
else:
node = stack.pop()
container.append(node.val)
if len(container) == k:
break
curr = node.right
return container.pop()