我需要在这两个类上实现一个size()而不确定如何开始:
interface Tree extends Cloneable {
int size();
}
class Fruit implements Tree {
@Override public int size() {
}
}
class Branch implements Tree {
private List<Tree> children = new LinkedList<Tree>();
public List<Tree> getChildren() {
return Collections.unmodifiableList(children);
}
public void addChild(Tree tree) {
children.add(tree);
}
@Override public int size() {
}
}
任何人都可以指导我如何创建这两个size()方法吗?我需要它们来计算树中实际果实的数量。
答案 0 :(得分:3)
我认为这是作业? ;)
怎么样
@Override public int size() {
int size = 0;
for(Tree tree: children) size += tree.size();
return size;
}
答案 1 :(得分:0)
链接列表操作通常以递归方式完成,其中每个节点都有这个大小定义:
@Override
public int size(){
// Don't forget the base case! (if there is no child)
return (child != null) ? 1 + child.size() : 1;
}
调用rootNode.size()
以递归方式为链表的每个节点求和1,最终将大小返回给原始调用者。