0

我创建了一个 TreeNode 类,它包含一个树节点(命名分支)的 ArrayList,我想通过用户输入的路径将新分支添加到树中。一个示例路径是 /Monkey/King/Bar,其中每个路径理想情况下都是现有分支,最后一个除外(Bar 将是我想添加到 King 的分支)。Temp 是一个全局变量,我用于将新分支添加到树中,并且通过递归,我试图沿着路径向下移动,以验证每个分支是前一个分支的子分支,但我在让它工作时遇到了一些麻烦。这是我到目前为止所拥有的,并且想知道当我重新声明临时 TreeNode 时它是否与不设置父级有关。任何帮助将不胜感激,如果我所说的任何内容过于模糊,请要求澄清。

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 = "";
}
4

1 回答 1

1

如果路径存在或类似的东西,您似乎正在尝试遍历树并在末尾添加一个节点(或分支)?

我认为问题主要在于您如何处理字符串,而不是节点。你实际上并没有得到路径的一部分,你正在做整个字符串,然后什么都没有。

首先,以这种方式处理字符串的更好方法是使用 String.split

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

接下来,您需要知道它是否是字符串的一部分

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

如果我对您所做的事情的评估是正确的,那么您似乎正在正确处理其余代码。

于 2012-04-30T22:02:15.807 回答