文章目录
- 题目链接
- 解题思路
- 解题代码
题目链接
230. 二叉搜索树中第K小的元素
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。
示例 1:
输入:root = [3,1,4,null,2], k = 1
输出:1
示例 2:
输入:root = [5,3,6,2,4,null,null,1], k = 3
输出:3
解题思路
递归遍历
- 采用中序遍历,即以左-根-右的顺序进行遍历,这样可以得到一个单调递增的数组。
- 我们可以用数组res存放遍历结果,当len(res) == k时退出遍历
解题代码
class Solution:
def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
res = [] #存放遍历结果
def dfs(root):
if not root:
return
dfs(root.left)
if len(res) == k: #已经找到第k小元素
return
res.append(root.val)
dfs(root.right)
dfs(root)
return res[-1]
参考资料:力扣热题100对应的题解