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
解题思路
- 中序遍历root将树节点值放入列表中
- 因是二叉搜索树,所以列表有序排列
- 取第k个元素
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def kthSmallest(root, k):
def inorder(node):
if not node:
return
inorder(node.left)
res.append(node.val)
inorder(node.right)
res = []
inorder(root)
return res[k-1]