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

    示例 1:
    image.png
    输入:root = [3,1,4,null,2], k = 1
    输出:1
    示例 2:

    输入:root = [5,3,6,2,4,null,null,1], k = 3
    输出:3

    1. /**
    2. * Definition for a binary tree node.
    3. * function TreeNode(val, left, right) {
    4. * this.val = (val===undefined ? 0 : val)
    5. * this.left = (left===undefined ? null : left)
    6. * this.right = (right===undefined ? null : right)
    7. * }
    8. */
    9. /**
    10. * @param {TreeNode} root
    11. * @param {number} k
    12. * @return {number}
    13. */
    14. var kthSmallest = function(root, k) {
    15. let res = 0;
    16. // 当前排名
    17. let rank = 0;
    18. const traverse = (root, l) => {
    19. if(!root) return;
    20. traverse(root.left, l);
    21. rank++
    22. if(rank === k) {
    23. res = root.val;
    24. return
    25. }
    26. traverse(root.right, k)
    27. }
    28. traverse(root, k)
    29. return res
    30. };

    image.png