的好我有這樣的代碼:性能遞歸
public void TraverseTree(TreeNode node) {
TraverseTree(node.getLeftChild());
System.out.println(node.getKey());
TraverseTree(node.getRightChild());
}
這實際上通過樹的節點遍歷並打印。我正準備寫一個測試用例,當我想到你怎麼能單元測試一個沒有返回類型的函數呢?
更改代碼,使其「單元測試」後值得的,它看起來是這樣的:
public ArrayList<Object> TraverseTree(TreeNode node, ArrayList<Object> array) {
if(array == null)
array = new ArrayList<Object>();
traverseTree(node.getLeftChild(), array);
array.add(node.getKey())
traverseTree(node.getRightChild(), array);
return array;
}
現在我想,這是做的正確方法?那麼對於每次遞歸調用,都有一個ArrayList對象將堆棧推出?這是一個好方法嗎?如果樹包含數千個密鑰會怎麼樣?
我真的想知道有沒有更好的方法來做到這一點?並有可能單元測試我的第一個代碼示例(不返回任何東西)?我的測試用例只是1)是否按照正確的順序返回?如果樹爲空會發生什麼? etc
是的,這是我想要一個返回類型的原因,以便我可以檢查結果,而不是系統功能。 – samach