无法检查输入树的有效路径(字符串)

时间:2012-04-30 21:49:06

标签: java recursion treenode tree-nodes

我创建了一个TreeNode类,它包含树节点的ArrayList(名为branch),我想通过用户输入的路径向树添加新的分支。一个示例路径是/ 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 = "";
}

1 个答案:

答案 0 :(得分: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]) 
}

如果我对你所做的事情进行评估是正确的,那么看起来你正在正确处理剩下的代码。