티스토리 뷰
생각 과정
struct를 하나 구현해주고 tree 의 left 하고 right을 표현해줘야 children(자식 노드들) 을 참조할수 있음
Preorder는 인풋 받고 left, right 차례대로 재귀로 순회
Inorder는 left로 먼저 D(맨 왼쪽 끝 자식노드) 참조하고 그리고 input 받고 right 순회
Postorder는 삼각형 모양을 먼저 뽑고 왼쪽 노드를 참조 못하니 오른쪽 끝 자식에서부터 순회 -> 따라서 left, right 둘다 순회해주고 인풋 받기
모든 함수 기저조건 - 만약 . 만나면 자식노드 없으니 아무것도 리턴하지 않음.
처음 left right 포인터 만약 문제가 달라지면 설정법이 달라질 수도있으니 주의.
코드
#include <iostream>
using namespace std;
int n;
//참조
// https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/
// (struct 구현 및 입력 부분만) https://velog.io/@hyez_dev/%EB%B0%B1%EC%A4%80-1991-%ED%8A%B8%EB%A6%AC-%EC%88%9C%ED%9A%8C-C
struct node{ //따로 노드 구현하는 법을 몰라 풀이 참고
char left;
char right;
};
node c[28];
void PreOrder(char node){
if (node == '.'){
return ;
}
cout << node;
PreOrder(c[node].left); //node? node - 'A'?
PreOrder(c[node].right);
}
void InOrder(char node){
if (node == '.'){
return;
}
InOrder(c[node].left);
cout << node;
InOrder(c[node].right);
}
void PostOrder(char node){
if (node == '.'){
return;
}
PostOrder(c[node].left);
PostOrder(c[node].right);
cout << node;
}
int main(){
cin >> n;
char nod, lft, rht;
for (int i = 0; i < n; i++){ //1 인덱싱 하면 에러... 질문...
cin >> nod >> lft >> rht;
c[nod].left = lft;
c[nod].right = rht;
}
PreOrder('A'); //언제 single quote, 언제 double quote in C++?
printf("\n");
InOrder('A');
printf("\n");
PostOrder('A');
printf("\n");
}
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 색종이(초)
- 볼모으기
- 1535
- 1438
- 15652
- 3427
- 24954
- N과M
- 2857
- 1304
- 1338
- 문자열찾기
- 단어집합2
- 연필공장
- 백준
- 세로읽기
- 15651
- 몇번째조합
- 2604
- 문자사각형
- 트리 순회
- 15654
- 숫자사각형3
- 볼 모으기
- 문자삼각형1
- 색종이(중)
- 15650
- 5545
- 8129
- 정올
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함