建立水果杂交树

时间:2011-04-19 20:41:40

标签: java tree linked-list

好的,我有这些接口和类:

代码:

interface Tree extends Cloneable { int size(); }
class Fruit implements Tree {
@Override public int size() { 

return this.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() { 

int size = 0;
for(Tree tree: children) size += tree.size();
return size;

}
}
class Mango extends Fruit { /* intentionally left empty */ }
class Peach extends Fruit { /* intentionally left empty */ }

我需要创建构造这种混合树的代码:

  • 树的主干(主分支)

    • 一个有两个芒果的分支

    • 的另一个分支
      • 带有两个芒果的(子)分支

      • 一个桃子

我得到了第一部分:

Branch trunk = new Branch();

但不确定如何对下一部分进行编码,任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您需要创建其他每个对象并将其添加到主干。使用Branch中定义的addChild(Tree tree)方法。

一些伪代码:

make a branch for the trunk

make a branch
make two mangoes
add mangoes to branch
add the mango branch to the trunk

make a branch
make a peach
add peach to branch
make a sub-branch
make two mangoes
add mangoes to sub-branch
add sub-branch to branch
add branch to trunk

这是非常程序化的,但鉴于您拥有的代码,这可能是最简单的方法。我建议您考虑在可能的情况下对设计进行更改,但如果这是一项家庭作业,您可能会遇到它。

正如我所读到的那样,这种构造似乎或多或少地符合composite pattern