我知道這段代碼應該可以工作,但它不會。有誰知道我錯過了什麼?我正在嘗試獲取二叉樹中所有節點的總和。這種方法爲什麼計算二叉樹的總和不起作用?
public int getSum() {
if (this == null) {
return 0;
} else {
return this.value + right.getSum() + left.getSum();
}
}
我知道這段代碼應該可以工作,但它不會。有誰知道我錯過了什麼?我正在嘗試獲取二叉樹中所有節點的總和。這種方法爲什麼計算二叉樹的總和不起作用?
public int getSum() {
if (this == null) {
return 0;
} else {
return this.value + right.getSum() + left.getSum();
}
}
您的支票this == null
是完全沒用的。但是,您需要檢查您的左右節點的存在,您是否需要檢查。試試這個:
return this.value + (right != null ? right.getSum() : 0)
+ (left != null ? left.getSum() : 0);
嘿,現在它的工作!非常感謝!你能解釋一下爲什麼我的代碼不起作用嗎? – user1420042 2013-02-20 21:08:27
由於二叉樹節點不保證有左側和/或右側子節點。在調用函數之前,您需要檢查它們的存在。 – Perception 2013-02-20 21:10:11
當你聲明這不起作用時,當你嘗試時會發生什麼?你有運行時錯誤嗎?你有錯誤的答案嗎?什麼是一些示例輸入,預期結果和實際結果? – 2013-02-20 21:01:37
「this」如何爲空? – rgettman 2013-02-20 21:02:22
「這」不利於兄弟。 – Kevin 2013-02-20 21:03:05