给定一个二叉搜索树的根节点
root,和一个整数k,请你设计一个算法查找其中第k****小的元素(从 1 开始计数)。
输入: root = [3,1,4,null,2], k = 1
输出: 1
第一种解法
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func kthSmallest(root *TreeNode, k int) int {
// 本质还是考察中序遍历
var res []int
var f func(*TreeNode)
f = func(node *TreeNode) {
if node == nil {
return
}
f(node.Left)
res = append(res, node.Val)
f(node.Right)
}
f(root)
return res[k-1]
}