I'm trying to traverse a binary tree by level, then sum the ints held in each node per level which is held in levelSum. I then want to multiply the levelSum by the number of the level that I am at and add this to the totalSum. When I run it I get a NullPointException on line 15 but I haven't been able to figure out why.
public int depthSum() {
    Queue<IntTreeNode> q = new LinkedList<IntTreeNode>();
    int totalSum = 0;
    int levelSum = 0;
    int multiplier = 1;
    int nodesPerLevel = 0;
    if(overallRoot != null) {
        q.offer(overallRoot);
        nodesPerLevel += 1;
        while(!q.isEmpty()) {
            int countDown = nodesPerLevel;
            while(countDown > 0) {
                countDown--;
                IntTreeNode n = q.remove();
                levelSum += n.data; //this is line 15
                if(n.left != null) {
                    q.offer(n.left);
                    nodesPerLevel++;
                }
                if(n.right != null) {
                    q.offer(n.right);
                    nodesPerLevel++;
                }
            }
            totalSum += (multiplier * levelSum);
            levelSum = 0;
            multiplier++;
        }
    }
    return totalSum
}
This is the stack trace:
NullPointerException on line 15:
java.lang.NullPointerException
at IntTree.depthSum (Line 15)
 
     
    