2012-04-30 27 views
0

我創建了一個TreeNode類,它包含樹節點(命名分支)的ArrayList,並且我想通過用戶輸入的路徑將新分支添加到樹中。一個示例路徑是/ Monkey/King/Bar,其中每個理想情況下都是現有分支,但最後一個分支(Bar將是我想添加到King的分支)。 Temp是一個全局變量,用於向樹中添加新的分支並使用遞歸我試圖沿着驗證每個分支是前一個分支的孩子的路徑移動,並且在使它工作時遇到了一些麻煩。這是我到目前爲止所想知道的,當我重新聲明臨時樹節點時,是否與設置父節點有關。任何幫助將不勝感激,如果我說的話太模糊,請要求澄清。無法檢查輸入到樹中的有效路徑(字符串)

TreeNode tree = root; 
boolean valid = false; 
String y = x; //User entered path 
for (int i = 0; i < x.length(); i++) 
{ 
    if (x.charAt(i) == '/') 
    { 
     for (int j = 0; j < tree.branch.size(); j++){ 
     if (tree.branch.get(j).toString().equals(y)){ 
      System.out.println(temp.value); 
      tree = tree.branch.get(j); 
      temp = tree; 
      valid = true; 
     } 
     else 
      valid = false; 
     } 
     y = ""; 
} 
+1

你對這條線有什麼期待? if(tree.branch.get(j).toString()。equals(y)) 是不是y不存在的完整字符串/ Monkey/King/Bar?你不應該比較一些y的範圍嗎? – rooftop

+0

當您嘗試使用此代碼時會發生什麼?它與你希望發生的事情有什麼不同? 「讓它工作起來有點麻煩」,很模糊...... –

+0

你有沒有注意到''i'沒有在你的循環體內的任何地方使用,除非你檢查'x.charAt(i)'是否是' /'?特別是,你沒有做任何事情來從'x'中提取任何子字符串。你不是嗎? –

回答

1

它看起來像你試圖遍歷樹,並在結尾添加一個節點(或分支)如果路徑存在或類似的東西?

我認爲問題主要是你如何處理字符串,而不是節點。你實際上並沒有獲得路徑的一部分,你正在做整個字符串,然後什麼都沒有。

首先,一個更好的辦法以這種方式處理字符串的工作是使用String.split

String[] pathparts = String.split("/"); 

接下來,你需要知道,如果它的strign

for(int i=0;i<pathparts.length-1;i++){ // we don't want the last string 
    // your code with .get(pathparts[i]) 
} 

它的一部分看起來好像你正在處理其他的代碼,如果我對你所做的評估是正確的。

+0

我完全沒有意識到我可以打破這樣的字符串。我將嘗試實現這一點,看看它是如何發展的。謝謝。 – Vorfall

+0

讓我們知道如何去,隨時向我們尋求更多幫助 – dfb

+0

從我迄今爲止測試過的它現在的工作狀況來看,再次感謝您的幫助。 – Vorfall