找到N-ary树中的最大平均得分

时间:2016-10-29 05:55:56

标签: java algorithm data-structures tree

我想显示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é"]

我写了下面的逻辑,但由于我的逻辑错误,它给了我错误的答案。你能指出我哪里出错吗?

1 个答案:

答案 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用于平均值。