鉴于此界面...
public static interface Node
{
int getValue();
List<Node> getChildren();
}
实现以下方法以返回树中所有节点值的平均值。
public static double getAverage(Node root)
{
}
我很难解决这个练习题,并且有几个问题。
此外,如果有人可以提供一些假代码,我会非常感激。
答案 0 :(得分:1)
您可以使用递归,但也可以在没有递归的情况下解决此问题。你需要的只是深度优先搜索。您可以使用堆栈迭代地实现它。
是的,有可能。具有堆栈的版本不需要任何其他方法。
是的,有可能。您可以在一次遍历期间计算这两个值。
这是非递归实现的伪代码:
valuesSum = 0
nodesCount = 0
stack = new Stack
stack.add(root)
while (!stack.isEmpty())
Node v = stack.poll()
nodesCount++
valuesSum += v.getValue()
for (child : v.getChildren())
stack.add(child)
return valuesSum / nodesCount