链表大小()

时间:2011-04-14 17:00:40

标签: java tree

我需要在这两个类上实现一个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()方法吗?我需要它们来计算树中实际果实的数量。

2 个答案:

答案 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,最终将大小返回给原始调用者。