검색중인 노드가 정렬되지 않은 이진 트리에 있음을 알고 있지만 재귀 호출을 통해 내 경로를 다시 전달하는 방법을 알 수 없습니다. 내 두 가지 기능 : 하나는 특정 노드에 대한 경로를 찾고, 다른 하나는 모든 노드에 대한 경로 문자열을 반환합니다. 0은 왼쪽 경로가 취해지고 1이 오른쪽임을 나타냅니다.이진 트리에서 노드의 경로를 반복적으로 찾는 것
private static String getAllPaths(final BinaryNodeInterface<Character> root)
{
// TO DO
String path = "";
String returnStr = "";
return getAP(root, path, returnStr);
}
private static String getAP(BinaryNodeInterface<Character> root, String path,
String returnStr)
{
returnStr += "" + root.getData() + " " + path + "\n";
if(root.hasLeftChild())
getAP(root.getLeftChild(), path.concat("0"), returnStr);
if(root.hasRightChild())
getAP(root.getRightChild(), path.concat("1"), returnStr);
return returnStr;
}
private static String getPathTo(final BinaryNodeInterface<Character> root, char c)
{
// TO DO
String path = "";
if(root.getData() == c)
return path;
if(root.hasLeftChild())
{
String s = getPathTo(root.getLeftChild(), c);
if(s != null)
{
path += "0";
path += s;
return path;
}
}
if(root.hasRightChild())
{
String s = getPathTo(root.getRightChild(), c);
if(s != null)
{
path += "1";
path += s;
return path;
}
}
return null;
}
나는 재귀에서 끔찍하다. 그래서 어떤 도움도 크게 감사하겠습니다. 나는 모든 것을 작동하도록했습니다. 위의 코드는 이제 좋습니다. 도와 주셔서 감사합니다.