이 진 트 리 와 값 을 위 한 경 로 를 인쇄 합 니 다.
struct BTNode
{
int data;
BTNode *leftChild;
BTNode *rightChild;
};
사고: 경 로 를 구 하 는 것 은 뿌리 노드 에서 잎 노드 까지 이기 때문에 우 리 는 이 진 트 리 의 순서 로 구 조 를 옮 겨 다 니 는 것 을 고려 할 수 있다. 다음 과 같다.
4. 567913. 그러나 이 진 트 리 의 재 귀 구조 에서 부모 노드 로 거 슬러 올 라 갈 때 우 리 는 앞에서 재 귀 된 경로 의 노드 의 값 을 얻 을 수 없다. 이런 조작 은 시스템 이 자동 으로 재 귀 작업 스 택 으로 이 루어 진 것 이기 때문에 우 리 는 스스로 배열 을 정의 하여 지나 간 경로 의 노드 를 저장 해 야 한다.한 노드 에 접근 할 때마다 이 노드 를 경로 배열 에 추가 합 니 다. 잎 노드 에 도 착 했 을 때 우 리 는 경로 배열 의 값 과 만족 여 부 를 보고 만족 하면 출력 배열 의 노드 경 로 를 인쇄 합 니 다. 하위 노드 에서 부모 노드 로 돌아 갈 때마다 경로 배열 의 값 을 제거 해 야 합 니 다.즉, 스 택 에 재 귀 할 때 노드 의 값 을 추가 하고 스 택 을 재 귀 할 때 노드 의 값 을 제거 해 야 합 니 다.
상기 사고 코드 를 바탕 으로 다음 과 같다.
void preOrder(BTNode *root)
{
if(root!=NULL)
{
cout<<root->data;
preOrder(root->leftChild);
preOrder(root->rightChild);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.