Kth Largest Sum in a Binary Tree

MediumTreeBreadth-First SearchSortingBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function kthLargestLevelSum(root: TreeNode | null, k: number): number {
  if (root === null) {
    return -1;
  }
 
  const sums = [];
  let queue = [root];
  while (0 < queue.length) {
    let sum = 0;
    const nextQueue = [];
    for (const node of queue) {
      if (node.left) {
        nextQueue.push(node.left);
      }
      if (node.right) {
        nextQueue.push(node.right);
      }
      sum += node.val;
    }
    sums.push(sum);
    queue = nextQueue;
  }
 
  if (sums.length < k) {
    return -1;
  }
  sums.sort((a, b) => b - a);
  return sums[k - 1];
}

Complexity

  • Time: O(N + klogk)
  • Space: O(N)