[路飞]二叉搜索树中第 K 小元素

86 阅读1分钟

记录 1 道算法题

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

230. 二叉搜索树中第K小的元素 - 力扣(LeetCode) (leetcode-cn.com)


二叉搜索树的特点是中序遍历时是一个升序排列,所以我们只需要中序遍历然后到第 k 个的时候中断返回就行了。

另外,第 K 小,看到这几个字的时候,其实我们也可以用堆来解题,遍历二叉树的方式可以是深度也可以是广度。

  1. 循环
    function kthSmallest(root, k) {
        const stack = []

        while (stack.length > 0 || root) {
          while (root) {
            stack.push(root)
            root = root.left
          }

          root = stack.pop()

          if (--k === 0) {
            return root.val
          }

          root = root.right
        }
    }
  1. 递归
    function kthSmallest(root, k) {
        if (!root) return
        let res

        function _(root) {
          if (!root) return

          _(root.left)
          if (--k === 0) {
            res = root.val
          }
          _(root.right)
        }
        _(root)

        return res
    }