# 题目: 230. 二叉搜索树中第K小的元素

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

# 示例1:

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

# 示例2:

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

# 提示:

  • 树中的节点数为 n 。

# 中序遍历

二叉搜索树具备以下性质:

  • 结点的左子树只包含小于当前结点的数。
  • 结点的右子树只包含大于当前结点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

二叉搜索树的中序遍历是一个递增序列,则这里可以使用迭代式的中序遍历,来拿到第k个最小元素。

# 代码

var kthSmallest = function(root, k) {
    let stack = []
    while(root!==null || stack.length!==0){
        while(root!=null){
            stack.push(root)
            root = root.left
        }
        root = stack.pop()
        --k
        if(k===0){
             break;
        }
        root = root.right
    }
    return root.val
};

# 参考资料