2012-04-30 28 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