天机阁

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

2022-08-11 · 1 min read
LeetCode

题目

给定一个二叉搜索树的根节点 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

提示:

  • 树中的节点数为 n 。
  • 1 <= k <= n <= 104
  • 0 <= Node.val <= 104

题解

中序遍历二叉搜索树,使用数组保存其元素顺序,然后返回第K个位置的元素。

代码实现

// 中序遍历
func kthSmallest(root *TreeNode, k int) int {
	var res []int
	var inorder func(node *TreeNode)
	inorder = func(node *TreeNode) {
		if node == nil {
			return
		}
		inorder(node.Left)
		res = append(res, node.Val)
		inorder(node.Right)
		return
	}
	inorder(root)
	return res[k-1]
}