我创建了一个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 = "";
}
答案 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])
}
如果我对你所做的事情进行评估是正确的,那么看起来你正在正确处理剩下的代码。