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

题目:

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

分析:

利用二叉搜索树的特点,其左根右(前序遍历)序列为非递减序列。

所以,直接递归遍历,数数即可。

// date 2023/10/30
/**
 * 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 count int
    var dfs func(root *TreeNode)
    dfs = func(root *TreeNode) {
        if root == nil {
            return
        }
        dfs(root.Left)
        count++
        if count == k {
            res = root.Val
            return
        }
        dfs(root.Right)
    }

    dfs(root)

    return res
}

最后更新于