2015-10-13 66 views
1

我有文件,如:
從文本文件中創建樹

X1根
X2根
X3 X1
X4 X3

所以我需要得到:

root - x1 - x3 - x4 
root - x2 

語言是Ja va
所以我認爲我需要使用遞歸,對嗎?

ADDED
於是,我就做我自己。 這個代碼工作,但並不光彩

private void findTree(List<String> lines, String item, GenericTreeNode<String> parent, int i){ 
    if(i >= lines.size()){ 
     try{ 
      findTree(lines, parent.getParent().getData(), parent.getParent(), 0); 
     }catch(Exception ex){ 
      print(tree.toStringWithDepth()); 
     } 
    } 
    else if(lines.get(i).split(" ")[1].trim().equals(item)){ 
     item = lines.get(i).split(" ")[0]; 
     GenericTreeNode<String> child = new GenericTreeNode<String>(item); 
     parent.addChild(child); 
     lines.remove(i); 
     findTree(lines, item, child, 0); 
    }else if(item == "XXXXX"){ 
     print (tree.toStringWithDepth()); 
    }else if(i!=(lines.size()-1)){ 
     findTree(lines, item, parent, i+1); 
    }else{ 
     findTree(lines, parent.getParent().getData(), parent.getParent(), 0); 
    } 
} 

「XXXXX」這是在我的樹根。

+2

看起來像你需要1)閱讀2)搜索一個位置3)附加。但實際上你的問題的答案是否定的。遞歸是一個選項,但不是必需的。 – ergonaut

+0

我覺得假設輸入文件總是完美是不安全的。正確?像'x1 root \ n x4 x3 \ n x3 x1'可能是一個可能的文件? – Jay

+0

好的,我添加了一些代碼 – Andrey

回答

0

不,你不必使用遞歸來解決這個問題。您可以使用迭代解決方案解決此問題

例如,您可以使用List列表結構。 (在每次找到根時創建一個列表)