【发布时间】:2015-12-22 04:12:52
【问题描述】:
给定这个界面...
public static interface Node
{
int getValue();
List<Node> getChildren();
}
实现以下方法以返回树中所有节点值的平均值。
public static double getAverage(Node root)
{
}
我在这个练习题上遇到了非常困难的问题,并且有几个问题。
- 我认为最好使用递归来完成,对吗?
- 如果没有辅助方法或全局变量,这是否可行?
- 这是否可能无需遍历树两次? (一次用于节点总和,一次用于节点计数)
另外,如果有人能提供一些伪代码,我将不胜感激。
【问题讨论】:
-
所有三个问题的答案都是“是”;现在,您可以编辑您的问题并添加您已经尝试过的代码吗?
-
所以我可以为这个问题创建一个递归解决方案,而无需添加任何辅助方法或全局变量,也无需遍历树两次?
-
@CODE 如果您的意思是仅使用在您的问题中显示签名的
getAverage方法,那么答案很可能是否定的。知道每个子树的平均值是不够的:我们需要知道其中的节点数或总和。 -
@kraskevich 确实,这也是我的假设