2014-11-22 2 views
0

선행 검색을 사용하여 az와 AZ 문자로 구성된 이진 트리에서 노드를 찾으려고합니다. 여기서 왼쪽은 "0"으로 표시되고 오른쪽으로가는 것은 "1"로 표시되어 올바른 출력은 왼쪽에 두 개의 분기 인 노드에 대해 "00"처럼 보일 것입니다. 노드는 정렬되지 않습니다.바이너리 트리의 특정 노드에 인쇄

static String routeNum = "";  

private static String onePath(BinaryNodeInterface<Character> root, String route) { 

    BinaryNodeInterface<Character> temp = root; 
    if(temp != null){ 

    if(temp.hasLeftChild()){ 
     routeNum = onePath(temp.getLeftChild(),route+"0"); 

     } 
     if(temp.hasRightChild()){ 
     routeNum = onePath(temp.getRightChild(), route+"1"); 

     } 
    } 

    System.out.print(route); 
    return route; 
} 

출력 내가 바로 노드에 얻고 있음을 나타냅니다하지만 경로를 인쇄하지 않습니다

지금까지 나는이 있습니다.

+0

이 함수. – splrs

+0

'routeNum = route + "0"; onePath (temp.getLeftChild(), route + "0"); ' 'routeNum = route + "1"; \t onePath (temp.getRightChild(), route + "1")); 이것을 할 수있는 깨끗한 방법은 StringBuffer를 사용하는 것입니다. – arunmoezhi

답변

-1

인쇄 방법을 절대로 호출하지 않습니다. 다음을 사용할 수 있습니다 :

System.out.println(route); 

경로 문자열을 인쇄하십시오.

+0

시도했지만 모든 노드의 경로를 출력합니다. 나는 이것을 할 다른 방법을 가지고 있는데, 그것은이 방법을 복사 한 곳이다. –

+0

String toPrint = onePath (root, "")와 같은 작업을 수행합니다. System.out.println (toPrint)을 호출하십시오. – holtc

0

정적 문자열없이이 코드를 사용해보십시오 routeNum = "";

private static String onePath(BinaryNodeInterface<Character> root, String route) { 

BinaryNodeInterface<Character> temp = root; 
if(temp != null){ 

if(temp.hasLeftChild()){ 
    route += "0"; 
    onePath(temp.getLeftChild(),route); 

    } 
    if(temp.hasRightChild()){ 
    route += "1"; 
    onePath(temp.getRightChild(), route); 

    } 
} 

system.out.println(route); 
return route; 

}

통화 처리에서 System.out.println을 (라고하는) 또는 출력이있을 수 _won't_ 필요

String path = onePath(root, ""); 
Print(path); 
관련 문제