私は次のようなNodeクラスを持っています:
public class Node {
private int value;
private Node leftNode;
private Node rightNode;
public Node(Node leftNode, Node rightNode, int value){
this.leftNode = leftNode;
this.rightNode = rightNode;
this.value = value;
}
//Getter and Setter methods for these variables are defined here
}
このNodeクラスは、バイナリツリーを作成するために使用されます。すべてのノードの平均を計算するために、JAVAで再帰関数を作成しています。私が以下に書いたコードは正しい答えを与えません。これは、参照ではなく、パラメータaverageとnodeCountの値が渡されるためだと思います。
public double treeAverage(Node node, double average, int nodeCount){
nodeCount ++;
if(node == null) return Double.MAX_VALUE;
if(node.getLeftNode()==null && node.getRightNode()==null){
average = ( average + node.getValue() )/nodeCount;
}
if(node.getLeftNode()!=null){
average = treeAverage(node.getLeftNode(), average, nodeCount);
}
if(node.getRightNode()!=null){
average = treeAverage(node.getRightNode(), average, nodeCount);
}
return average;
}
Javaでこの再帰関数を修正する正しい方法は何でしょうか?(CIでは、これらのパラメーターへの参照を渡すことができます)。私が間違っている場合は訂正してください。