我尝试使用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个字符串的列表,我无法弄清楚如何自动生成树 任何帮助都非常感谢