我有BinaryTreeNode(int值)與其左側和右側的孩子和BinaryTree(int rootVal)與BinaryTreeNode根與rootVal作爲其值。 我開發了一個代碼來計算樹中的節點(類BinaryTreeNode)的數量,但它不會因爲一個NullPointerException的工作:通過遞歸確定整數二叉樹的大小
public int size(){
if(this == null) { // base case
return 0;
} else {
return 1 + left.size() + right.size();
}
}
然而另一種解決辦法,我發現,有類似的策略,作品:
public int size(BinaryTreeNode refNode){
if(refNode == null) { // base case
return 0;
} else {
return 1 + size(refNode.left) + size(refNode.right);
}
}
我已經明白了爲什麼我的代碼拋出一個異常(這是因爲左/右將指向NULL)。 但我想明白爲什麼第二種解決方案的準則是相同的。 提前謝謝!
第二個版本的作品,因爲你不嘗試調用一個方法上的空,你只需將null傳遞給函數。從第一個如果你知道refNode不是null – wastl