1
我在計算二叉樹中的節點時遇到了問題。這是一個真正簡單的樹,如下圖所示。計算二叉樹中的節點
(5)
(3)-------^-------(7)
(2)---^---(6) ^-------(9)
(5)---^---(8)
我添加了8個節點,所以應該有8個。但是當我運行我的代碼時,它會計算7個節點。我認爲這只是計算所有左側節點和右側節點,並且不計算根,但是我在將節點數設置爲1之前對根節點進行計數,然後對左側和右側節點進行計數。請參閱下面的代碼
private int getNumNodes(Node<E> root){
numNodes = 1; // starts by counting the root
// counts the left nodes
if(root.left != null){
numNodes += getNumNodes(root.getLeft());
}
// counts the right nodes
if(root.right != null){
numNodes += getNumNodes(root.getRight());
}
return numNodes;
}
public int getNumNodes(){
return root == null ? 0 : getNumNodes(root);
}
它必須在某處丟失計數,但我不確定它在哪裏發生。你能幫我一下嗎?謝謝。
要求人們發現代碼中的錯誤並不是特別有效。您應該使用調試器(或者添加打印語句)來分析問題,追蹤程序的進度,並將其與預期發生的情況進行比較。只要兩者發生分歧,那麼你就發現了你的問題。 (然後如果有必要,你應該構造一個[最小測試用例](http://sscce.org)。) – 2013-03-15 01:07:49
我想知道'close(1/5)'是什麼意思。 – 2013-03-15 01:09:31
@jdb不,它應該是一個局部變量而不是類成員 – 2013-03-15 01:10:53