我試圖遍歷一個二進制樹的級別,然後求和保存在levelSum中保存的每個級別的每個節點中的整數。然後,我想將levelSum乘以我所在的級別的數字,並將其添加到totalSum中。當我運行它時,我在第15行得到一個NullPointException,但我一直無法弄清楚爲什麼。加總二進制樹級別
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
}
這是堆棧跟蹤:
NullPointerException on line 15:
java.lang.NullPointerException
at IntTree.depthSum (Line 15)
一如往常:堆棧跟蹤請。哪一行是第15行? – Seelenvirtuose
這行是15:'tempSum + = n.data;'? – AlexR
是的,這是第15行。只是添加了一條評論來顯示它。 –