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循环总是返回最后一个要检查的子级的值。因此,如果根的重量往往大于最后一个孩子的最后一个孩子的重量,那么您将始终得到根的重量。