【路飞】二叉搜索树的第k大节点

253 阅读1分钟

题目:剑指 Offer 54. 二叉搜索树的第k大节点

image.png

分析

  1. 二叉搜索树的中序遍历为递减序列;
  2. 求 “二叉搜索树第 k 大的节点” 可转化为求 “此树的中序遍历倒序的第 k 个节点”;

4ebcaefd4ecec0d76bfab98474dfed323fb86bfcd685d1a5bf610200fdca4405-Picture1.png

function kthLargest(root, k) {
  let res = 0;
  const dfs = (node) => {
    if (!node) return;
    dfs(node.right);
    if (--k == 0) {
      res = node.val;
    }
    dfs(node.left);
  };
  dfs(root);
  return res;
}