我想显示n-ary树的最大平均分数,其中平均值=子节点值/子节点数的总和。 我的节点定义如下
r = /
@ # match character
[[[:alpha:]]]+ # match one or more letters
\b # match word break
/x # free-spacing regex definition mode
"@tom @john how are you? And you, @andré?".scan(r)
#=> ["@tom", "@john", "@andré"]
我写了下面的逻辑,但由于我的逻辑错误,它给了我错误的答案。你能指出我哪里出错吗?
答案 0 :(得分:1)
您必须为每个有孩子的孩子更新max
值。试试这个:
private static int calculateaverage(NaryNode root,int max) {
int sum = 0;
int count =0;
if(root.children.size() == 0)
return root.value;
for(NaryNode cc : root.children){
if(cc.children.size() > 0){
int tmp = calculateaverage(cc,max);
if(tmp>max){
max = tmp;
}
}
sum+=cc.value;
count++;
}
sum = sum/count;
if(sum>max)
max = sum;
return max;
}
注意:您可能希望将double
用于平均值。