建造一个像树一样的树

时间:2009-08-03 11:29:04

标签: java

我刚刚发布了以下问题,但我犯了一个错误。我想要的不是如何使用Eclipse,而是如何构建树状结构。元素可以包含多个子元素。   那么告诉我如何构建树;它实际上不是树,而是建立如下所示的结构。感谢

我在申请时遇到了这个问题,需要帮助。我有这种形式的服务器数据

食品苹果果实等。

Table Chair pen School et ..

...

Food Mango Peer Melon等..

从左边读,我想做例如;在第一行,

Apple的食品父母

Apple的水果之父

种子的亲子

如果还有更多数据等等。我将使用循环从服务器迭代上述数据;实施例:::

+Food
    Apple
       Fruit
           Seed
            etc..

+Table
      Chair
          Pen
             School
              etc..

在上面的代码中,“Food”和“Table”属于同一级别。我的问题是我该如何开始。我用Google搜索了一整天但找不到我真正理解的东西。我怎样才能使“食物”成为父母,让苹果成为孩子,然后让Fruit成为苹果的孩子等等。告诉我如何构建树。

需要你的帮助。

由于

3 个答案:

答案 0 :(得分:1)

您可以尝试使用javax.swing.tree.DefaultMutableTreeNode类。虽然它在swing包中,但它不包含任何图形代码。

答案 1 :(得分:1)

这是一个简单的实现,每个节点都有一个人类可读的String名称,并引用零个或多个子节点。

public interface Node {
  String getName();

  void addChild(Node node);

  List<? extends Node> getChildren();
}

public class NodeImpl implements Node {
  private final String name;
  private final List<Node> nodes;

  public NodeImpl(String name) {
    this.name = name;
    this.nodes = new LinkedList<Node>();
  }

  public String getName() {
    return name;
  }

  public void addChild(Node node) {
    nodes.add(node);
  }

  public List<? extends Node> getChildren() {
    return Collections.unmodifiableList(nodes);
  }
}

示例用法是:

Node root = new Node("Root"); // Create root node.
Node food = new Node("Food"); // Create level 1 child nodes.
Node table = new Node("Table");

root.addChild(foo); // Add level 1 child nodes to root.
root.addChild(table);

Node apple = new Node("Apple"); // Create and add other child nodes.
food.addChild(apple); // etc.

答案 2 :(得分:0)

创建一个名为Node的类,make Node有一个节点的ArrayList和一个包含父节点的变量。就这样:

class Node {

private List<Node> children; 
private Node parent;

public Node() {
    children = new ArrayList<Node>(); 
}
//Constructors, accessors, mutators, etc.

}

这是迄今为止最简单的方法。你可以使节点成为一个抽象类,然后有椅子,桌子,学校等,所有这些都扩展了Node。

public class School extends Node {

    public School() {
        super();
    }

    public void addChild(Node node) {
        children.add(node);       
    }

    public void setParent(Node node) {
        parent = node;
    }
}

修改:我添加了一些示例方法,向您展示添加子项或设置父项时需要执行的操作。在其他一些类中,您可以创建School,Desk等对象,然后创建addChild和setParent方法,以便将子项添加到节点或设置节点的父项。