2014-11-22 18 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

Вы должны назвать System.out.println() или там _won't_ быть любой выход. – 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

Попробуйте этот код без статического маршрута StringNum = "";

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; 

}

Вызов этой функции с

String path = onePath(root, ""); 
Print(path); 
Смежные вопросы