我有一個數據結構,其中節點可以有多個父母。
我有一個我想插入到樹中的節點列表。 列表中的節點包含數據及其父項的子列表。遞歸填充樹圖
我想從這個列表中構建一棵樹。
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