🚀 本题 LeetCode 传送门

    题目大意

    给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

    解题思路

    • 由于二叉搜索树有序的特性,所以中根遍历它,遍历到第 K 个数的时候就是结果

    代码

    1. package leetcode
    2. /**
    3. * Definition for a binary tree node.
    4. * type TreeNode struct {
    5. * Val int
    6. * Left *TreeNode
    7. * Right *TreeNode
    8. * }
    9. */
    10. func kthSmallest(root *TreeNode, k int) int {
    11. res, count := 0, 0
    12. inorder230(root, k, &count, &res)
    13. return res
    14. }
    15. func inorder230(node *TreeNode, k int, count *int, ans *int) {
    16. if node != nil {
    17. inorder230(node.Left, k, count, ans)
    18. *count++
    19. if *count == k {
    20. *ans = node.Val
    21. return
    22. }
    23. inorder230(node.Right, k, count, ans)
    24. }
    25. }