2012-04-30 1 views
0

트리 노드 (이름이 branch)의 ArrayList를 포함하는 TreeNode 클래스를 만들고 사용자가 입력 한 경로로 트리에 새 분기를 추가하려고합니다. 대표적인 경로는/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

이 줄에서 무엇을 기대합니까? if (tree.branch.get (j) .toString(). equals (y)) 은 아직 존재하지 않는 전체 문자열/Monkey/King/Bar가 아닙니까? y의 범위를 비교해서는 안됩니까? – rooftop

+0

이 코드를 사용하려고하면 어떻게됩니까? 당신이 원하는 일과 어떻게 다른가요? "작동하는데 어려움을 겪고있다"는 것은 꽤 애매합니다 ... –

+0

'x.charAt (i)'가' /'? 특히,'x'에서 서브 문자열을 추출하기 위해 아무것도하지 않습니다. 당신이되어야하지 않아? –

답변

1

당신이 트리를 탐색하고 경로가 존재하면 끝 또는 이와 유사한에서 노드 (또는 지점)을 추가하려는 것 같습니다?

저는 문제가 주로 노드가 아닌 문자열을 처리하는 방법이라고 생각합니다. 당신은 실제로 길의 일부를 얻지 못하고, 당신은 전체 문자열을하고 있습니다.

첫째, 이런 식으로 문자열로 일할 수있는 더 좋은 방법은, 당신이이 strign

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

그것의 일부인지 알아야 할 사항 String.split

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

다음을 사용하는 것입니다 당신이하고있는 것에 대한 나의 assesment가 정확하다면 당신은 코드의 나머지 부분을 올바르게 다루는 것처럼 보입니다.

+0

나는 완전히 그 문자열을 분해 수있는 인식하지 못했습니다. 이것을 구현하고 어떻게 진행되는지 살펴볼 것입니다. 고맙습니다. – Vorfall

+0

어떻게되는지 알려주세요. 더 많은 도움을 청하십시오. – dfb

+0

지금까지 테스트 해본 결과 잘 돌아 왔습니다. 다시 도움을 주셔서 감사합니다. – Vorfall