diff --git a/cs/kth-largest-sum-in-a-binary-tree.cs b/cs/kth-largest-sum-in-a-binary-tree.cs new file mode 100644 index 0000000..c0a11cd --- /dev/null +++ b/cs/kth-largest-sum-in-a-binary-tree.cs @@ -0,0 +1,27 @@ +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]; + } +}