leetcode-二叉树-二叉搜索树第k小的元素

44 阅读1分钟

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