2013-02-20 59 views
0

我知道這段代碼應該可以工作,但它不會。有誰知道我錯過了什麼?我正在嘗試獲取二叉樹中所有節點的總和。這種方法爲什麼計算二叉樹的總和不起作用?

public int getSum() { 
    if (this == null) { 
     return 0; 
    } else { 
     return this.value + right.getSum() + left.getSum(); 
    } 
} 
+1

當你聲明這不起作用時,當你嘗試時會發生什麼?你有運行時錯誤嗎?你有錯誤的答案嗎?什麼是一些示例輸入,預期結果和實際結果? – 2013-02-20 21:01:37

+4

「this」如何爲空? – rgettman 2013-02-20 21:02:22

+1

「這」不利於兄弟。 – Kevin 2013-02-20 21:03:05

回答

5

您的支票this == null是完全沒用的。但是,您需要檢查您的左右節點的存在,您是否需要檢查。試試這個:

return this.value + (right != null ? right.getSum() : 0) 
     + (left != null ? left.getSum() : 0); 
+0

嘿,現在它的工作!非常感謝!你能解釋一下爲什麼我的代碼不起作用嗎? – user1420042 2013-02-20 21:08:27

+0

由於二叉樹節點不保證有左側和/或右側子節點。在調用函數之前,您需要檢查它們的存在。 – Perception 2013-02-20 21:10:11