我有一个数据结构,其中节点可以有多个父母。
我有一个我想插入到树中的节点列表。 列表中的节点包含数据及其父项的子列表。递归填充树图
我想从这个列表中构建一棵树。
private class Treenode {
private List<Treenode> children;
private List<Treenode> parents;
public List<Treenode> getChildren() {
return children;
}
public List<Treenode> getParents() {
return parents;
}
private Info data;
public Info getData() {
return data;
}
public void setData(Info data) {
this.data = data;
}
public Treenode() {
children = new ArrayList<Treenode>();
parents = new ArrayList<Treenode>();
}
public Treenode(Info data) {
children = new ArrayList<Treenode>();
parents = new ArrayList<Treenode>();
this.data = data;
}
public boolean addChild(Treenode n) {
return children.add(n);
}
public boolean removeChild(Treenode n) {
return children.remove(n);
}
public boolean addParent(Treenode n) {
return parents.add(n);
}
public boolean removeParent(Treenode n) {
return parents.remove(n);
}
}
private void scanListAndAddToTree(final List list,Treenode parent){
for (Iterator iter = list.iterator(); iter.hasNext();) {
Info info = (Info) iter.next();
String [] parents = info.getParents();
if(parents==null){ //no parents
Treenode newNode = new Treenode(info);
parent.addChild(newNode);
scanTree(list,newNode);
} else
for (int i = 0; i < parents.length; i++) {
if (parents[i].getID.equals(parent.data.getID())){
Treenode newNode = new Treenode(info);
parent.addChild(newNode);
scanTree(list,newNode);
}
}
}
但我的代码是错误的:(
递归从未停止并重新添加同一节点
多个父母+多个孩子 - >这不是一棵树,只是一个图形。 – Matten 2012-01-02 10:05:22
什么是“错”是什么呢?识别问题是第二步找到解决方案 – 2012-01-02 10:05:56
的第一步,意味着“我的代码是错误的”?你遇到了哪个错误?应该发生什么,发生了什么?任何例外?也许你应该概述预期的/实际的结果,并试图了解发生了什么,什么改变了以及如何改正。 – Matten 2012-01-02 10:07:07