public class Solution { private void Sum(List levels, TreeNode node, int level) { if (node == null) { return; } while (level >= levels.Count) { levels.Add(0); } levels[level] += node.val; Sum(levels, node.left, level + 1); Sum(levels, node.right, level + 1); } public long KthLargestLevelSum(TreeNode root, int k) { var levels = new List(); Sum(levels, root, 0); if (k > levels.Count) { return -1; } levels.Sort(); return levels[levels.Count - k]; } }