Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图找到树的最大权重的递归算法_Java_Algorithm_Recursion_Tree - Fatal编程技术网

Java 试图找到树的最大权重的递归算法

Java 试图找到树的最大权重的递归算法,java,algorithm,recursion,tree,Java,Algorithm,Recursion,Tree,我试图找到一个递归算法,找到树的最大可能权重,但限制是,如果节点在最终解中,那么它的子节点都不能在最终解中。然而,孩子们的孩子们可以在解决方案中 int MT (Node node) { if(node.children.size()==0) { return node.data; } else { int ktotal=0; if(node.children.size() != 0) {

我试图找到一个递归算法,找到树的最大可能权重,但限制是,如果节点在最终解中,那么它的子节点都不能在最终解中。然而,孩子们的孩子们可以在解决方案中

 int MT (Node node)
{
    if(node.children.size()==0)
    {
        return node.data;
    }
    else
    {
        int ktotal=0;
        if(node.children.size() != 0)
        {   
            for (int i =0; i<node.children.size();i++ )
            {
                ktotal=MT(node.children.get(i));
            }
        }
        return Math.max(ktotal, node.data);
    }

}
这是我当前拥有的代码,但它返回根节点的权重。我非常感谢你的帮助


提前感谢

for循环错误。它始终返回最后一个节点的权重。应该是这样的

if (node.children.size() > 0)
    ktotal= MT(node.children.get(0));
for (int i =1; i<node.children.size();i++ )
{
    ktotal=Math.max(ktotal,MT(node.children.get(i)));
}

我不明白您想做什么,但是for循环总是返回最后一个要检查的子级的值。因此,如果根的重量往往大于最后一个孩子的最后一个孩子的重量,那么您将始终得到根的重量。