我怎样才能从树上获得面包屑?

时间:2012-06-20 07:21:46

标签: java tree breadcrumbs

我有如下例子的树,其中每个叶子都是对象。

[1]
 |--[2]
 |   |--[3]
 |   |--[4]
 |       |--[5]
 |--[6]

类结构是:

public class Node {
    private Integer id;
    private List<Node> children;
    public Integer getId()
    {
        return id;
    }
    public void setId(Integer id)
    {
        this.id = id;
    }
    public List<Node> getChildren()
    {
        return children;
    }
    public void setChildren(List<Node> children)
    {
        this.children = children;
    }
}

如果选择了leaf 3,则面包屑为1 2 3.如何从此树创建面包屑?我知道如何递归创建树,但我不知道如何选择正确的叶子到面包屑。

2 个答案:

答案 0 :(得分:5)

您需要在子项中使用父指针。添加子节点时,父节点可以将子节点的父指针设置为自身。

public class Node {
    private Integer id;
    private Node parent;
    private List<Node> children;
    public Integer getId()
    {
        return id;
    }
    public void setId(Integer id)
    {
        this.id = id;
    }
    public List<Node> getChildren()
    {
        return children;
    }
    public void setChildren(List<Node> children)
    {
        this.children = children;
        for (Node child : children) {
            child.parent = this;
        }
    }
    public Node getParent() {
        return parent;
    }
}

然后,您可以轻松地使用它来从选定的叶节点构建面包屑。

答案 1 :(得分:1)

您可以在创建过程中将父项添加为每个节点的字段。这样你就可以从每个对象到达root。