一日一练:二叉搜索树中第K小的元素

144 阅读1分钟

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

运用二叉搜索树中序遍历的特性。结果数组从小到大排列。

  • 中序遍历二叉树
  • 结果数组取第k-1
function kthSmallest(root: TreeNode | null, k: number): number {
  const arr: number[] = []
  // 中序遍历 深度优先
  function dfs(root: TreeNode | null) {
    if (root === null) return
    root.left && dfs(root.left)
    arr.push(root.val)
    root.right && dfs(root.right)
  }

  dfs(root)

  return arr[k - 1]
}