하이브리드 트리/링크 된 목록 구조와 비슷합니다. 다음은 구조를 정의한 방법입니다.
struct node {
nodeP sibling;
nodeP child;
nodeP parent;
char name[100];
};
노드에는 연결된 목록에 연결된 자식이 있습니다. 연결된 목록의 다른 요소는 연결된 목록 또는 자체로 연결된 자체 자식이있을 수 있습니다.
내 질문에, 어떻게이 노드를 탐색하여 특정 노드의 경로를 인쇄 할 수 있습니까?
의견을 보내 주시면 감사하겠습니다. 감사
업데이트 다음은 printPath 기능 :
//node -> root of the tree
//current = this is the node that i need to print path to
void printPath(nodeP node, nodeP current){
if (node != NULL){
if ((strcmp(node->name, current->name) == 0))
{
printf("%s/", node->name);
return; //it returns to the previous recursive call and then continues until the node is null
}
printPath(root->childDir, currentDir);
printPath(root->sibling, currentDir);
printf(" %s/", node->name);
}
}
내 문제는 한 번 마무리 인쇄 경로의 경우 현재 노드에 재귀 호출 벗어나 려한다.
이미지와 코드 사이의 관계가 표시되지 않습니다. 부모와 자식 포인터는 노드 간의 양방향 연결을 제안합니다. 간략하게하기 위해 –
부모 모이통을 추가했습니다. 그게 도움이된다면 제거 할 수 있습니다. – pdhimal1
'parent'를 꺼내면'left'와'right' 대신'child'와'sibling'이라는 이름을 사용하는 일반 이진 트리에 머물러 있습니다. 따라서 이진 트리에 대해 일반적으로 사용되는 기술에서이를 통과하십시오. –