java中基于LinkedList的树

时间:2014-11-21 15:43:00

标签: java tree linked-list

我尝试使用Java中的链接列表生成一棵树,但我正在努力, 我希望树像这样;如果根是(" 1"," 2"," 3") child1将是(" 2"," 3"),child2将是(" 1"," 3")child3(" ; 1"," 2") 第二级子节点将用于child1; child11(" 2")和child12(" 3") 等等,我使用链表

编写了这段代码
public class BBTree<T> {

T NodeMembers;
BBTree<T> Parent;
List<BBTree<T>> Children;

public BBTree() {

}
public BBTree(T Nodes){
    this.NodeMembers = Nodes;
    this.Parent = null;
    this.Children = new LinkedList<BBTree<T>>();
}
public BBTree<T> addChild (T Nodes){
    BBTree<T> child = new BBTree<T>();
    child.Parent = this;
    child.NodeMembers = Nodes;
    this.Children.add(child);
    return child;
}
public void ChildrenMembers(){
    List<String> parentMembers = (List<String>) this.NodeMembers;
    Iterator<String> i = parentMembers.iterator();
    while (i.hasNext()){
        String LeftValue = i.next();
        List<String> copy = new LinkedList<String>();
        for (String ChildMember : parentMembers ){
            if (!LeftValue.equals(ChildMember))
                copy.add(ChildMember);
        }
        T copy2 = (T)copy;
        this.addChild(copy2);
    }
}

它适用于逐级添加子节点 这是我做第一次测试的方式

public static void main (String[] args){
    BBTree<List<String>> tree = new BBTree<List<String>>(Arrays.asList("1", "2", "3", "4", "5"));
    tree.ChildrenMembers();
    System.out.println("the root is "+ tree.NodeMembers);
    Iterator<BBTree<List<String>>> i = tree.Children.iterator();


    while (i.hasNext()){
        BBTree<List<String>> node = i.next();
        System.out.println("the child is "+ node.NodeMembers);
    }

}

如果我在根目录中有70个字符串的列表,我无法弄清楚如何自动生成树 任何帮助都非常感谢

0 个答案:

没有答案