当前位置: 首页 > 后端技术 > Python

力扣-0230.二叉搜索树中第k小的元素【Python】

时间:2023-03-26 12:33:47 Python

题目LeetCode给定一棵二叉搜索树,写一个函数kthSmallest,找出其中第k小的元素。例1:输入:root=[3,1,4,null,2],k=13/\14\2输出:1例2:输入:root=[5,3,6,2,4,null,null,1],k=35/\36/\24/1Output:3Followup:如果BST经常被修改(插入/删除操作),需要频繁的找第k小怎么办?你将如何优化kthSmallest例程?约束:BST的元素数量在1到10^4之间。你可以假设k总是有效的,1≤k≤BST的总元素。问题给定一个二叉搜索树,编写一个函数kthSmallest来找到第k个最小的元素。解释:你可以假设k总是有效的,1≤k≤BST元素的数量。示例1:输入:root=[3,1,4,null,2],k=13/\14\2输出:1示例2:输入:root=[5,3,6,2,4,null,null,1],k=35/\36/\24/1输出:3进阶:如果二叉查找树经常被修改(插入/删除操作),需要找到第k小的怎么办你针对Idea的取值优化kthSmallest函数中序遍历因为BST的中序遍历是升序的,所以只需要依次遍历然后取第k个元素即可。Python3code#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclass解决方案:defkthSmallest(self,root:TreeNode,k:int)->int:#中序遍历definorder(root):ifnotroot:return[]returninorder(root.left)+[root.val]+inorder(root.right)returninorder(root)[k-1]GitHublinkPython